今日は久々にrand関数を使って遊んでみました。
1から入力した整数までの範囲でランダムに値を返すものです。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int ret;
char buf[256];
int value;
int i = 0;
srand( (unsigned int)time(NULL) ); //時間を種にする
while(1){
i++;
printf("random number from 1 to :");
gets(buf);
ret = sscanf(buf, "%d", &value);
if( ret == 0 ){ //ret:変換出来た数
printf("fin...\n");
break; //数字以外で終了
}
else if( 1 > value ){ //負数は認めない
printf("invalid value.\n");
}
else{
printf("%2d: %d\n", i, ( 1 + rand() % value ) ) ;
}
}
return 0;
}
これでWIN5とかロト何とかとか買ったら当たりますかねえ・・・(絶対当たらない
(2021.9.5追記)
「gets関数はあまり使わない方が・・・」との声もありそうなので一応。
あくまで遊びのプログラムですし、流石に255桁以上の数字は打たないだろうということで今回は使いました。
気になる場合は
fgets(buf, sizeof(buf), stdin);
あたりで置き換えるかすればいいと思います。