发布网友 发布时间:2022-04-20 11:49
共5个回答
热心网友 时间:2023-09-12 19:48
假设要生成的随机数是大于等于20且小于等于100的整数
#include<stdio.h>热心网友 时间:2023-09-12 19:48
生成1~13的随机数,随机数序列中没有重复字数
#include <stdio.h>
#include <stdlib.h> // 包含rand()函数说明
#include <time.h>
#define N 13
void main( void )
{ inti, j, num[N], tmp; //用当前时间种子重置随机数生成器,使每次运行生成不同的随机数
srand((unsigned)time( NULL ) );
for(i=0;i<N;i++) // 生成N个数
{
while(1) //生成1个数
{
tmp=N *rand()/ RAND_MAX +1; // 产生随机数
for(j=0;j<i;j++) //判断是否重复
if( tmp==num[j] )
break;
if(j==i) // 找到1个数
{
num[i]=tmp; //入队列
break; // 开始下一轮
}
} printf("%3d\t",num[i]); //打印结果
}
}
如果可以重复,去掉内循环,直接将生成的随机数存入数组。
热心网友 时间:2023-09-12 19:49
srand(int)来设种子,然后每次rand()返回一个随机数。
注意要包含#include <stdlib.h>头文件,因为用到了srand函数
#include <time.h> //用到了time函数热心网友 时间:2023-09-12 19:49
产生一定范围随机数的通用表示公式
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。
热心网友 时间:2023-09-12 19:50
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int func()
{
return rand() % 13 + 1;//rand()产生0到32767的随机数,模13就得到0到12的随机数,加1就是1到13的随机数
}
int main()
{
srand((unsigned)time(0));//这个也是关键,是放入随机数种子,通常都是放系统当前时间的。
for (int i = 0;i<10;i++)
{
printf("random : %d\n", func());
}
return 0;
}