0

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

4

2 回答 2

7

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

只需循环并呼叫rand()您需要的每个号码。它不会“使用更多的 CPU”(超过什么?),它会很好。

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

于 2013-01-08T16:18:21.143 回答
0

使用 rand() 是一个更好的主意。然而,如果你真的想做你的伪随机生成器(这在 99% 的情况下不是正确的答案),那么看看线性同余生成器 ——它背后的数学很简单,它是 libc 的基础的 random() 实现。您可以尝试尝试相同的乐趣!这是另一个链接

于 2013-01-08T16:32:06.687 回答