• ベストアンサー

乱数表示のプログラム

g_doriの回答

  • g_dori
  • ベストアンサー率47% (330/699)
回答No.3

「rand関数を使え」という指示が無ければ、こんな発想もあります。 1~100迄の値が入った数列を用意して、数字をバラバラに入れ替えれば終わりです。(結局ココにrandを使うことになりますので、ある意味課題クリアです) プログラム量も非常に短くなりますし、負荷は入れ替えの回数次第で調節できます。 ところで、time関数ってミリ秒が帰ってくると思うのですが、高速CPUでやるとずっと同じ値が帰ってきたりしませんか・・?

関連するQ&A

  • C言語でサイコロのプログラムを作ってみたのですが

    まず、以下のような”実行するたびに1~6の数字をランダムに出力するプログラム”を 作ってみたのですが、特定の数字が出てこないのです。 例えば、1と4、2と5、3と6 が出ない ここで気がついた事は、 1、出ない目の2数の差は3であること。 2、乱数自体を表示させたところ、ちゃんと1秒毎に乱数は変わっている。こちらには問題はない 3、約1分間隔で、出ない数字の組み合わせが変わる。 (例えば 1,3,4,6,1,6,3,6,4(2と5が出ない)  →1分間実行し続けると・・・  2,3,6,5,3,2,2,6(1と4が出ない)) この原因は一体なんなのでしょうか・・・ とても気になって仕方がありません。わかる方教えてください。 以下、ソースコードになります #include<stdio.h> #include<time.h> #include<stdlib.h> int func(void); int main(void){ int number=0; number=func(); //サイコロの目の表示 printf("%d\n",number); return 0; } int func(){ //乱数の初期化 srand((int unsigned)time(NULL)); //サイコロの目をランダムで出力し、返す return rand()%6+1; } プログラムの仕組みは パソコンから現在の歴時刻を元に乱数の初期値を変更 ↓ rand関数で適当な値を受け取り、6で割った余剰+1を計算し値を返却する

  • 重複しない組み合わせのプログラム

    0から9のうち4つの数字を取り出すというC言語のプログラムをつくりたいのですが、ランダム関数を用いると重複してしまいます。どのようにしたらよいでしょうか?

  • 完全な乱数を生成する方法

    C言語で乱数を生成するときに、今まで srand(time(NULL)); を使用していたのですが、それだと1秒以内に複数の処理を行った際に、 同一の乱数が生成されてしまいます。 時間にとらわれずに完全にランダムな数字を出現させるにはどのような方法を取るのが簡単なのでしょうか? よろしくお願いします。

  • 乱数を使う

    お世話になっております。 乱数についての質問なんですが、 なんと説明して良いのかわからないので例を挙げます。 コマンドボタンを三つ用意する。 コマンドボタン1をクリックすると、1~3までのランダムな値を表示する。 続けてコマンドボタン2をクリックすると、 先ほど表示した数字以外の1~3までの値を返す。 同様にコマンドボタン3をクリックすると最後に残った数字を表示する。 ってなことがやりたいんですが、 アドバイスお願いします。 あ、あとコマンドボタンを1回クリックすると もう2度とクリックできないようにするなんて事は出来るんですか?

  • C言語プログラム 作ってくれませんか?m(__)m

    C言語 プログラム 1~45の数字の中からランダムに15ペアの組み合わせと残りの数字を表示するようなプログラムをつくりたいのですが,どなたか作ってくれませんか? 以下のような表示例みたいなのが,嬉しいです。お願いします。 Ex. ./ random 6 -27 5 -22 4 -19 1 -21 15 -14 33 -40 17 -36 37 -28 13 -42 23 -41 34 -24 7 -35 38 -11 12 -8 26 -18 43 9 3 25 16 2 44 29 30 39 45 10 20 32 31

  • 乱数について

    今、あるデータの順番をばらばらにするプログラムを作ろうとしています。  たとえば、a,b,c,dとあったら、d,b,c,aとするように、この時考えられるプログラムは、データの数だけ配列を用意して、乱数で、どのデータを出力させるかを決定し、出力し終わったら、その配列のところに印を立てて、次にくるデータに対して、2重にならないように順次、出力していく方法が考えられるのですが。。。    膨大なデータをこのように、すると、二重になる確立が出力するたびに、高くなっていって、なかなか終わらなくなってしまいます。  そこで、残ったデータから、ランダムに選び出すアルゴリズムまたは、関数はないでしょうか?よろしくお願いします。

  • パスカル言語を用いた乱数利用について

    パスカル言語を用いた乱数発生についての質問です。 パスカル言語を用いて0~100までの整数をランダムで10個出したいので、次のようにプログラムを組んだのですが、 欲しい乱数が出てきません。どこが間違えているか指摘していただけないでしょうか。よろしくお願いします。 var x : integer; p : real; {本当はintegerなのだろうが、使うよう指示されたrandom関数を使うとなるとrealしか受け付けなかった。} begin i := 0; x := seed(wallclock); while i <> 10 do begin i := i + 1; p := random(100); writeln('random(100)=',p) end end. ちなみに、これを出力した時の例はこのような感じです。 random(100)=6.8e-01 random(100)=6.4e-02 random(100)=9.3e-01 random(100)=1.3e-01 random(100)=7.2e-01 random(100)=8.8e-01 random(100)=9.1e-02 random(100)=9.5e-01 random(100)=3.6e-01 random(100)=7.9e-01 (※6.8e-01とは6.8*10^(-1)をのことです)

  • エクセルで乱数を作成する

    たとえば、 A1~A1000に0から始まる9桁の数字を入力したとき、 B1に、B1~B1000内で重複しない、4桁の英数文字を表示させたいのです。 マクロは使わず関数で4桁の英数文字をランダムで表示させることは可能でしょうか? よろしくお願いいたします。

  • 3つほどプログラムをおしえてください。

    (1)100までの整数をいくつか入力し、10刻みでの個数を表示し、負の数が入力されると整数の入力を終わるプログラムです。各範囲の個数は配列に格納する。 実行結果 65 30 21 95 5 -1 0--- 9 : 1 10--- 19 : 0 20--- 29 : 1 30--- 39 : 1 40--- 49 : 0 50--- 59 : 0 60--- 69 : 1 70--- 79 : 0 80--- 89 : 0 90---100 : 1 (2)数字の文字列を入力し、その文字列に含まれる各数字(文字)'0','1',~'9'の個数を表示するプログラムの作成。 実行結果 1231234567 0: 0 1: 2 2: 2 3: 2 4: 1 5: 1 6: 1 7: 1 8: 0 9: 0 (3) 変数xは、0~1までの0.01刻みの値(101個)を取るとする。このとき、2次関数 f(x)=3x^2+2x+1の値が2.0<f(x)<3.0となるxの値をの個数を求めるプログラムの作成。ただし、xを引数としf(x)の値を返す関数を作成して、それを使用する。 実行結果 number=21 やってるうちにわけがわからなくなってしまいます。どなたかよろしくおねがいします。

  • C言語プログラム

    学校のレポートでC言語のプログラムを作りました。ところが実行してみると計算値を表示させるところに -1.#IND00 と表示されます。本当は実数が表示されるはずなに・・・ 多分、私のプログラムが間違っているのだろうと思います。どこが間違っているのか目星をつけるためにこの出力結果の意味を教えてほしいのです。