1. 程式人生 > >random無法在C語言中使用,rand與srand種子

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

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