C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ちょこっと変わった乱数ですが


(過去ログ 120 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■70219 / inTopicNo.1)  ちょこっと変わった乱数ですが
  
□投稿者/ しのび (1回)-(2014/03/03(Mon) 19:05:41)

分類:[.NET 全般] 

乱数について同じ数値、記号が続けて表示されないようにするためには
どのような処理が必要なのか教えを乞いたい。

もちろんそれは乱数とは別物になるのかもしれない。
コードではなく考え方をご提示いただければこのうえない幸せ
引用返信 編集キー/
■70220 / inTopicNo.2)  Re[1]: ちょこっと変わった乱数ですが
□投稿者/ 魔界の仮面弁士 (552回)-(2014/03/03(Mon) 19:25:28)
No70219 (しのび さん) に返信
> 乱数について同じ数値、記号が続けて表示されないようにするためには

2,2,2,2,2,2,…のように連続しているのは NG として、
1,2,1,2,1,2,…のような繰り返しのパターンは許容されるのでしょうか。


> コードではなく考え方をご提示いただければ

(案1)『サイコロの振り直し』
前回の乱数値を記憶しておき、同じ値が出たらもう一度抽出しなおす。

※母数が少ない場合は振り直し回数が増えるので、処理速度が低下する。


(案2)『トランプの山札』
あらかじめ、「数値/記号の一覧」をリスト化しておき、
一度選んだ数値/記号は、リスト(山札)から取り除く。
 
※続けるごとに、だんだんと山札が不足してくるので、
 適当なタイミングで、使用済みの値を山札リストに戻す必要がある。
引用返信 編集キー/
■70228 / inTopicNo.3)  Re[1]: ちょこっと変わった乱数ですが
□投稿者/ shu (499回)-(2014/03/04(Tue) 00:00:26)
No70219 (しのび さん) に返信

連続する2つのが同じでなければよい場合、
最終の値を保持します(2個目以降)。
乱数は全体の数より1少ない範囲で発生させます。
最終の値と同じであれば乱数範囲より除いた数値へ変更します。
このようにすれば可能です。


1連の重複しない数値+記号の集まりがある場合、それらを並び替えてから
最初から値を返していけばよいです。魔界の仮面弁士さんが提示している方法と
ほぼ同じになります。完全にランダムに並び替えると数値も記号もばらばらに
なりすぎるのでポーカーのようなゲームに使用する場合、そろわな過ぎて難しくなります。
そのような場合は乱数で発生した枚数でグルーピングしてグループ単位での並び替えとか
すると混ざりすぎないようにすることは出来ます。


どのような数値+記号の集合をどのように扱うかによってやり方が変わってきます。
引用返信 編集キー/
■70254 / inTopicNo.4)  Re[2]: ちょこっと変わった乱数ですが
□投稿者/ しのび (3回)-(2014/03/04(Tue) 16:12:43)
おおすばらしい、アドバイス、ありがとう感謝です
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -