c++产生不重复的随机数

2025-03-01 01:24:42
推荐回答(3个)
回答1:

RAND_MAX是32767, 于是rand()/RAND_MAX得到是1/32767~32767/32767, 乘上n依然只有32767个数
可以通过(rand() << 16) | rand(), 即高16位和低16位分别产生随机数的方法得到更大的随机数

另外先保存再取是个空间时间都特低效的办法, 更好的算法可以自己搜一下"C++产生不重复随机数"

回答2:

因为windows下rand函数取值只有32767个,你可以试试rand()*rand(),这样可以生成32767*32767范围的数!

回答3:

原因很简单,这是一个伪随机数,所有都是看似随机实际固定的,难免陷入死循环