我一直在試圖編寫一個用於生成隨機值的小C函數。問題是每次在for循環中調用函數時它都會返回相同的值。我明白問題是srand是用NULL播種的。我想知道的是如何糾正它,因此在for循環的每次迭代中函數都會返回一個不同的值。下面的代碼:如何使隨機值函數每次返回不同的值
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int randInt(int,int);
void main(){
int min=100, max=200,i=0;
for(i;i<11;i++){ printf("%d \n",randInt(min,max)); }
}
int randInt(int a,int b){
srand(time(NULL));
int randValue;
randValue=1+(int)rand()%(b-a+1);
return randValue;
}
請讓我知道,如果你有一個解決方案,也可以張貼一些參考的解決方案。先謝謝你 !
編輯:遇到問題#2,在將srand(time(NULL))換成main後,現在每次迭代都會在我的範圍內產生數字,即最初我想要的數字在100到200之間,但它也包含0和100。這與randValue=a+(int)rand()%(b-a+1);
解決作爲意見提出
不要在隨機函數內調用'srand'。 – 2014-09-13 10:41:23
展開退休忍者的評論。 srand用於(一次)初始化,然後rand用於檢索值。 – 2014-09-13 10:46:51
謝謝,忍者,它的工作!現在,再一個小問題 - 我試圖產生從100到200的數字,但函數生成值在100以下。我該如何解決這個問題? – 2014-09-13 10:47:19