random無法在C語言中使用,rand與srand種子
阿新 • • 發佈:2018-11-02
標題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
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。