2017年5月23日 星期二

使用 stdlib.h 函式庫的 rand() 取得二個亂數,比較它們的大小

使用 a= rand(),b= rand() 隨機取得整數之後,比較之。若 a<b,正確則傳回值為1, 錯誤則傳回0。

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

int main()
{
    int a,b;
  
    a= rand();
    b= rand();
    printf("a=%d b=%d a<b=%d\n",a,b,a<b);
    return 0;
}


執行結果:
a=41 b=18467 a<b=1

說明:
這樣也可以 printf("%d < %d = %d\n",a,b,a<b);

使用上面的程式有問題,每次執行的結果都是一樣的 a=41 b=18467,可見這個程式不可以取得亂數,應該使用下面的程式才可。

#include <stdio.h>
#include <stdlib.h> /* 亂數相關函數 */
#include <time.h>   /* 時間相關函數 */
int main(){
  /* 設定亂數種子 */
  srand( time(NULL) );

  /* 產生亂數 */
  int a = rand();
  int b = rand();

  printf("a= %d b= %d a<b= %d\n", a,b,a<b);
  return 0;
}


執行結果:
a= 3117 b= 26387 a<b= 1
a= 3172 b= 12502 a<b= 1
a= 3234 b= 20114 a<b= 1
但也奇怪?每次都是 a<b 似乎也有點不對!







沒有留言:

張貼留言