随机数创建

时间:2013-01-08 16:16:18

标签: c random random-sample

我需要在大小为5000 100的数组中生成arr[5000]随机索引。我认为rand()将使用更多的CPU,所以我不想循环它100次。我只想调用它一次,并希望有机制来获得随机数组索引。我的想法是为前20个索引提供随机值,并生成偏移量并继续添加到生成的随机值。即如果10是前20个索引中的随机值,那么如果偏移是6,那么我的随机数将是10,16,22,28...etc 你认为这是个好主意吗?你能推荐一下吗?谢谢。

2 个答案:

答案 0 :(得分:7)

这是一个可怕的想法,结果值根本不会是“随机的”。

只需循环播放并为您需要的每个号码拨打rand()。它不会“使用更多CPU”(超过什么?),它会没问题。

另外,请注意rand()通常是一个伪随机生成器,但仍然比你的方法更好。

答案 1 :(得分:0)

使用rand()是个更好的主意。但是,如果你真的想做你的伪随机生成器(99%的情况下不是正确的答案),那么看看Linear Congruential Generator - 背后的数学是直截了当的,它是基础libc的random()实现。您可以尝试尝试同样的乐趣!这是另一个link