ページ 11

合計が一定になる乱数生成

Posted: 2016年10月14日(金) 14:28
by STR
C言語(C++)で乱数を使いたいのですが、
乱数の合計が一定値になるようにしたいのですがどのように生成すればいいでしょうか。

Visual Studio 2012 Expressを使っています。
randNoise()を使うと、-1から1までのdouble型を返すようにしています。

解決方法わかる方、ご教授お願いします

Re: 合計が一定になる乱数生成

Posted: 2016年10月14日(金) 19:17
by box
STR さんが書きました: 乱数の合計が一定値になるようにしたいのですがどのように生成すればいいでしょうか。
むずかしいような気がします。
例えば、10個の合計が0という一定値になるようにしたい、とします。
このとき、「たまたま」最初の6個が全部+1だったとすると、後どうがんばっても
10個の合計を0にはできないですね。

そもそも、合計を一定値にしたい、という時点で乱数ではなくなっているような気もします。

Re: 合計が一定になる乱数生成

Posted: 2016年10月14日(金) 21:54
by hide
適当に生成した乱数の合計が目標値の5割だったら全て倍にするとか?
その場合乱数の範囲も倍になるけど。

何のためにそんなことするのかによってアプローチは違うかと思います

Re: 合計が一定になる乱数生成

Posted: 2016年10月14日(金) 23:18
by STR
乱数をたくさん生成して、合計値が指定値に1番近いように
ナップザック問題のように解くことは可能でしょうか?

Re: 合計が一定になる乱数生成

Posted: 2016年10月14日(金) 23:30
by hide
あなたが仕様を決めるのですから、不可能ってことはないでしょう。
でもそのやり方で出来た集合に含まれる要素は乱数というよりはただのランダムっぽい数でしょうね。
乱数は予測できたら意味ないですから。

Re: 合計が一定になる乱数生成

Posted: 2016年10月15日(土) 02:26
by STR
やってみてダメだったらまた投稿させていただくことにしました。
回答ありがとうございました