random无法在C语言中使用,rand与srand种子

标题rand与srand之间的分析

1. 关于随机数的使用:
下面我写了一个简单的数学题联系软件:
代码如下:

#include <stdio.h>
#include "stdlib.h"

int main(){
	int a, b ,c;
	char d;
	while(1)//无限循环,一直为真 
	{
		a=10+rand()%90;
		b=10+rand()%90;
		printf("\n%d+%d=?",a,b);
		scanf("%d",&c);
		while(c!=a+b)
		{
			printf("try again!");
			scanf("%d",&c);
		}
		printf("good!");
		printf("continue?(y/n)");
		scanf("\n%c",&d);
		if(d=='n'||d=='N')//但输入n,N,break跳出循环 
		break;
		
		
	}
}

在这里插入图片描述

标题关于种子的理解

下面有两段代码看看有什么不同:

标题

1

#include<stdio.h>
#include"stdlib.h"
int main(){int i=10;
for(int i=0;i<10;i++){
	int a=rand()%100;
     printf("a=%d%",a)
	
}
}
#include<stdio.h>
#include"stdlib.h"
int main(){int i=10;
for(int i=0;i<10;i++){
	srand(1);
	int a=rand()%100;
     printf("a=%d%",a);
}
}

两个不同有种子的随机数不会发生变化;
而没有种子的随机数发生变化;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
下面为引用的一部分

模除+加法”的方法

因为,对于任意数,0<=rand()%(n-m+1)<=n-m

因此,0+m<=rand()%(n-m+1)+m<=n-m+m

因此,如要产生[m,n]范围内的随机数num,可用:

int num=rand()%(n-m+1)+m;

其中的rand()%(n-m+1)+m算是一个公式,记录一下方便以后查阅。

比如产生10~30的随机整数:

srand(time(0));

int a = rand() % (21)+10;


作者:chikey
来源:CSDN
原文:https://blog.csdn.net/chikey/article/details/66970397

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

猜你喜欢

转载自blog.csdn.net/qq_42337335/article/details/83305916