我需要在大小为5000 100
的数组中生成arr[5000]
随机索引。我认为rand()
将使用更多的CPU,所以我不想循环它100次。我只想调用它一次,并希望有机制来获得随机数组索引。我的想法是为前20个索引提供随机值,并生成偏移量并继续添加到生成的随机值。即如果10
是前20个索引中的随机值,那么如果偏移是6
,那么我的随机数将是10,16,22,28...etc
你认为这是个好主意吗?你能推荐一下吗?谢谢。
答案 0 :(得分:7)
这是一个可怕的想法,结果值根本不会是“随机的”。
只需循环播放并为您需要的每个号码拨打rand()
。它不会“使用更多CPU”(超过什么?),它会没问题。
另外,请注意rand()
通常是一个伪随机生成器,但仍然比你的方法更好。
答案 1 :(得分:0)
使用rand()是个更好的主意。但是,如果你真的想做你的伪随机生成器(99%的情况下不是正确的答案),那么看看Linear Congruential Generator - 背后的数学是直截了当的,它是基础libc的random()实现。您可以尝试尝试同样的乐趣!这是另一个link。