gpt4 book ai didi

c - C语言生成 "In-Range"随机数

转载 作者:太空狗 更新时间:2023-10-29 14:53:30 25 4
gpt4 key购买 nike

我需要生成 [0, 10] 范围内的随机数,这样:

  • 所有数字出现一次。
  • 没有取得重复的结果。

有人可以指导我使用哪种算法吗?

最佳答案

Richard J. Ross 回答中的算法不正确。它生成 n^n 可能的顺序而不是 n!。 Jeff Atwood 博客上的这篇文章说明了这个问题:http://www.codinghorror.com/blog/2007/12/the-danger-of-naivete.html

相反,您应该使用 Knuth-Fisher-Yates Shuffle:

int values[11] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
srand(time(NULL));

for (int i = 10; i > 0; i--)
{
int n = rand() % (i + 1);

int temp = values[n];
values[n] = values[i];
values[i] = temp;
}

关于c - C语言生成 "In-Range"随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11316255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com