怎么用C++编写一个rand()函数,功能上是产生10个0-100之间的随机整数

2024-11-21 21:20:35
推荐回答(3个)
回答1:

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,输入C语言代码:

for (int i = 0; i < 10; i++)

printf("%d ", rand() % 100 +1);

3、编译器运行test.cpp文件,此时成功通过rand产生了10个1-100内的整数。

扩展资料:

但是,要注意的是所谓的“伪随机数”指的并不是假的随机数。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机数。计算机生 成的伪随机数既是随机的又是有规律的 —— 一部份遵守一定的规律。

一部份则不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这体现到了事物的特性 —— 差异性;但是每种树的叶子都有近似的形状。

这正是事物的共性 —— 规律性。从这个角度讲,我们就可以接受这样的事实了:计算机只能产生伪随机数而不是绝对的随机数。

系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed指定了一个值。

那么 rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始 值。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的。

所以为了避免上述情况的发生通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来 产生种子。如果仍然觉得时间间隔太小。

可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数。 例如,srand((unsigned)time(NULL)*10)

回答2:

c语言中产生随机数的相关函数主要包括srand和rand函数,两者配合生成随机数据,测试代码如下,
//程序功能产生10个0-100的随机数存储于数组a并打印
#include
#include
#include
void main()
{
int i=0;
int a[10]={0};
srand(time(NULL));
for(i=0;i<10;i++)
a[i]=rand()%101;//产生0-100的随机数
printf("数组为:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
}

一般srand和rand配合使用产生伪随机数序列。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列。

回答3:

#include
#include using namespace std;void main()
{
int a[10];
srand(time(0)); for(int i=0; i<10;i++)
a[i]=rand()%101;
}