C语言中生成随机数的最高效方法是什么?

2026-04-16 22:203阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计374个文字,预计阅读时间需要2分钟。

C语言中生成随机数的最高效方法是什么?

生成随机数的最佳方法是使用随机数生成器。仅当:

- 你不是在寻找完美的平均性时;- 你没有C++11支持,甚至没有TR1(因为你没有其他选择);- 你可以尝试使用类似C风格的解决方案时,那么你可以考虑以下解决方案。

生成随机数的最佳方法是什么? 当且仅当:

>你不是在寻找“完美的均匀性”或
>你没有C 11支持,甚至没有TR1(因此你没有其他选择)

那么您可以考虑使用以下C风格的解决方案,(为了这个社区的声誉〜见rand() Considered Harmful)是用透视字体编写的:

这是简单的C风格函数,它从最小值到最大值(包括最小值)的间隔生成随机数.这些数字似乎非常接近于均匀分布.

C语言中生成随机数的最高效方法是什么?

int irand(int min, int max) { return ((double)rand() / ((double)RAND_MAX + 1.0)) * (max - min + 1) + min; }

并且在使用它之前不要忘记调用srand:

int occurences[8] = {0}; srand(time(0)); for (int i = 0; i < 100000; ++i) ++occurences[irand(1,7)]; for (int i = 1; i <= 7; ++i) printf("%d ", occurences[i]);

产量:14253 14481 14210 14029 14289 14503 14235

另外看看:
Generate a random number within range?
Generate random numbers uniformly over an entire range
并找到一些时间,至少观看上述video的前11分钟

除此以外:

使用<random>就像Kerrek SB已经指出的那样.

本文共计374个文字,预计阅读时间需要2分钟。

C语言中生成随机数的最高效方法是什么?

生成随机数的最佳方法是使用随机数生成器。仅当:

- 你不是在寻找完美的平均性时;- 你没有C++11支持,甚至没有TR1(因为你没有其他选择);- 你可以尝试使用类似C风格的解决方案时,那么你可以考虑以下解决方案。

生成随机数的最佳方法是什么? 当且仅当:

>你不是在寻找“完美的均匀性”或
>你没有C 11支持,甚至没有TR1(因此你没有其他选择)

那么您可以考虑使用以下C风格的解决方案,(为了这个社区的声誉〜见rand() Considered Harmful)是用透视字体编写的:

这是简单的C风格函数,它从最小值到最大值(包括最小值)的间隔生成随机数.这些数字似乎非常接近于均匀分布.

C语言中生成随机数的最高效方法是什么?

int irand(int min, int max) { return ((double)rand() / ((double)RAND_MAX + 1.0)) * (max - min + 1) + min; }

并且在使用它之前不要忘记调用srand:

int occurences[8] = {0}; srand(time(0)); for (int i = 0; i < 100000; ++i) ++occurences[irand(1,7)]; for (int i = 1; i <= 7; ++i) printf("%d ", occurences[i]);

产量:14253 14481 14210 14029 14289 14503 14235

另外看看:
Generate a random number within range?
Generate random numbers uniformly over an entire range
并找到一些时间,至少观看上述video的前11分钟

除此以外:

使用<random>就像Kerrek SB已经指出的那样.