【发布时间】:2011-07-19 21:59:57
【问题描述】:
我想制作一个不会重复给出的数字的数字生成器 已经(C++)。
我只知道:
int randomgenerator(){
int random;
srand(time(0));
random = rand()%11;
return(random);
} // Added this on edition
那个函数给了我多余的数字。
我正在尝试创建一个问卷调查程序,以随机顺序给出 10 个问题,我不希望任何问题再次出现。
有人知道语法吗?
【问题讨论】:
-
如果你的随机数生成器不能重复,它就失去了随机性的一个重要方面。如果有人知道时间段,他们的猜测准确度会随着时间段接近尾声而提高,最后一次猜测的确定性为 100%。
-
srand() 应该运行 ONCE 并且只在程序启动时运行一次。
-
你可以简单地将最后一个值存储为 int,如果新值等于最后一个值,则在 1 和你想要的最大值减去你得到的数字之间添加一个随机数。你可以简单地使用模数来做到这一点,它比简单地使用 rand() 更随机 :)
-
@corsiKa 好吧,C++ 和 C 中的伪随机生成器很烂。
-
@AnonymousPi 无论您认为“C 和 C++”中的 RNG 有多糟糕,尝试制作自己的 RNG 肯定会更糟。 -gguuaarraanntteeeedd