【发布时间】:2012-09-06 21:15:59
【问题描述】:
我将rand() 用于需要唯一值的 6 位字段。我做得对吗?
概率是多少,rand() 可以在连续或频繁调用时给我类似的值?
当我使用 rand() 时,它是独一无二的。但是,当我打电话给srand(time(NULL)) 或srand(clock()) 时,返回了相同的号码。似乎,它对我来说是相反的。还是这样?
【问题讨论】:
-
您应该只调用一次
srand。这就是伪随机数序列的种子。 -
RAND_MAX 需要有 15 个“活动位”。在最坏的可能实现中,只有 32K 个不同的值。好消息:现在大多数实现都更好了。
-
@wildplasser 尽管
rand()/srand()按照您的comment 执行是合理的,但不幸的是,C 没有指定“只有(至少)32K 个不同的值”,只有值的范围 - 他们需要并非全部发生。
标签: c random unique uniqueidentifier