如何编写生成随机数的代码实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1231个文字,预计阅读时间需要5分钟。
C语言风格+C为随机数提供的工具是rand、srand和RAND_MAX,定义在stdlib.h中。+srand由rand设置种子,如果没有设置,相当于调用srand(1)。+rand产生伪随机数,范围是0到RAND_MAX,RAND_MAX至少是32767。+
C风格
C为随机数提供的工具是rand、srand和RAND_MAX,定义在<stdlib.h>中。
srand为rand设置种子,如果不设置,相当于调用过srand(1)。rand产生伪随机数,其范围为0到RAND_MAX,RAND_MAX至少是32767,在MSVC和GCC中这个值都是32767。
伪随机数看似随机,实则是有规律可循的,对于相同的种子值,rand产生的序列完全相同,也就是说无论你给srand一个什么数字,多次运行程序的结果都将相同——除非你给srand的是不同的数字,比如时间。<time.h>中的time函数返回整数表示的系统时间,可用于设置种子。
如果我们只需要0到9的随机数,可以把rand的返回值% 10;如果是42到233,可以写rand() % 192 + 42。下面的random函数封装了这项工作。注意只有在b - a + 1远小于或整除RAND_MAX时随机数的分布才比较均匀。
本文共计1231个文字,预计阅读时间需要5分钟。
C语言风格+C为随机数提供的工具是rand、srand和RAND_MAX,定义在stdlib.h中。+srand由rand设置种子,如果没有设置,相当于调用srand(1)。+rand产生伪随机数,范围是0到RAND_MAX,RAND_MAX至少是32767。+
C风格
C为随机数提供的工具是rand、srand和RAND_MAX,定义在<stdlib.h>中。
srand为rand设置种子,如果不设置,相当于调用过srand(1)。rand产生伪随机数,其范围为0到RAND_MAX,RAND_MAX至少是32767,在MSVC和GCC中这个值都是32767。
伪随机数看似随机,实则是有规律可循的,对于相同的种子值,rand产生的序列完全相同,也就是说无论你给srand一个什么数字,多次运行程序的结果都将相同——除非你给srand的是不同的数字,比如时间。<time.h>中的time函数返回整数表示的系统时间,可用于设置种子。
如果我们只需要0到9的随机数,可以把rand的返回值% 10;如果是42到233,可以写rand() % 192 + 42。下面的random函数封装了这项工作。注意只有在b - a + 1远小于或整除RAND_MAX时随机数的分布才比较均匀。

