2020年6月17日 星期三

C語言練習題10~亂數1090617

1、產生多個亂數
     程式例題~G:\我的雲端硬碟\c語言練習題\亂數例題\1產生多個亂數.cpp
 //取 1-10 的亂數 a=(rand() % 10) +1
//取 1-100 的亂數 a=(rand() % 100) +1
//取 100-1000 的亂數 a=(rand() % 901) +100
#include<stdio.h>
#include <stdlib.h>
#include <time.h>/* 亂數相關函數 */
int main(){
  int i=0,rana=0,ranb=0;
  for (i=1;i<=10;i++){
  rana= rand();               /* 未用時間函數,每次產生亂數會相同 */
  printf("rana%d=%d\t1~10亂數%d=%d\n",i,rana,i,rand()%10+1);
  }
  printf("\n");

srand( time(NULL) );   /* srand( time(0) )用時間函式設定亂數種子,每次亂數不同 */
for (i=1;i<=10;i++){
  ranb= rand();               /* 未用時間函數,每次產生亂數會相同 */
  printf("ranb%d=%d\t1~10亂數%d=%d\n",i,ranb,i,rand()%100+1);
  }
}
測試結果~
rana1=41        1~10亂數1=8
rana2=6334      1~10亂數2=1
rana3=19169     1~10亂數3=5
rana4=11478     1~10亂數4=9
rana5=26962     1~10亂數5=5
rana6=5705      1~10亂數6=6
rana7=23281     1~10亂數7=8
rana8=9961      1~10亂數8=2
rana9=2995      1~10亂數9=3
rana10=4827     1~10亂數10=7

ranb1=4268      1~10亂數1=17
ranb2=23352     1~10亂數2=51
ranb3=12026     1~10亂數3=80
ranb4=10023     1~10亂數4=4
ranb5=6184      1~10亂數5=85
ranb6=30327     1~10亂數6=36
ranb7=23878     1~10亂數7=74
ranb8=31578     1~10亂數8=78
ranb9=8132      1~10亂數9=45

ranb10=11613    1~10亂數10=26
第二次測試結果~
rana1=41        1~10亂數1=8
rana2=6334      1~10亂數2=1
rana3=19169     1~10亂數3=5
rana4=11478     1~10亂數4=9
rana5=26962     1~10亂數5=5
rana6=5705      1~10亂數6=6
rana7=23281     1~10亂數7=8
rana8=9961      1~10亂數8=2
rana9=2995      1~10亂數9=3
rana10=4827     1~10亂數10=7

ranb1=4448      1~10亂數1=55
ranb2=22841     1~10亂數2=45
ranb3=22272     1~10亂數3=74
ranb4=17368     1~10亂數4=44
ranb5=29586     1~10亂數5=89
ranb6=22192     1~10亂數6=58
ranb7=29100     1~10亂數7=86
ranb8=6963      1~10亂數8=1
ranb9=8561      1~10亂數9=24
ranb10=13999    1~10亂數10=31


2、猜1-100數字
     程式例題~G:\我的雲端硬碟\c語言練習題\亂數例題\2猜數字亂數1-100.cpp
//產生亂數1-100為答案,再猜出亂數
#include<stdio.h>
#include<time.h>
#include <stdlib.h>
int main(){
int gusq=0,ans=0;
srand(time(0));  //  srand(time(NULL));產生亂數
ans=rand()%100+1; printf("ans=%d\n",ans); //產生1~100的亂數
while (gusq != ans){
printf("請猜一個1~100內的整數=");
scanf("%d",&gusq);
if (gusq>ans){
printf("猜小一點\n");
}
else if (gusq<ans){
printf("猜大一點\n");
}
else {
printf("答對嘍\n");
}
}
}
測試結果~
ans=35
請猜一個1~100內的整數=65
猜小一點
請猜一個1~100內的整數=32
猜大一點
請猜一個1~100內的整數=38
猜小一點
請猜一個1~100內的整數=36
猜小一點
請猜一個1~100內的整數=34
猜大一點
請猜一個1~100內的整數=35
答對嘍

3、計算多次丟骰子,骰子6個數字出現的次數
       程式例題~G:\我的雲端硬碟\c語言練習題\亂數例題\3骰字1-6出現的次數.cpp.cpp
//計算多次丟骰子,骰子6個數字出現的次數
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand(time(0));
int arn[6]={0};//要初值,以免有暫存值
int i=0,dicn=0,j=0,count=0,sum=0;
printf("要丟幾次骰子=");
scanf("%d",&count);
for (i=0;i<count;i++){
dicn=rand()%6+1;    //printf("%d\n",dicn);
for (j=1;j<=6;j++){
if (dicn==j){
arn[j-1]++;
}
}
}
for (i=0;i<6;i++){
printf("骰子出現%d的次數=arn[%d]=%d\n",i+1,i,arn[i]);
sum=sum+arn[i];
}
printf("總次數=%d=%d",count,sum);
printf("\n");

}
測試結果~
要丟幾次骰子=100
骰子出現1的次數=arn[0]=17
骰子出現2的次數=arn[1]=12
骰子出現3的次數=arn[2]=20
骰子出現4的次數=arn[3]=19
骰子出現5的次數=arn[4]=17
骰子出現6的次數=arn[5]=15

總次數=100=100

沒有留言:

張貼留言

Chrome教學5-建立桌面捷徑1110217

 建立桌面捷徑