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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
STR

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

#1

投稿記事 by STR » 7年前

C言語(C++)で乱数を使いたいのですが、
乱数の合計が一定値になるようにしたいのですがどのように生成すればいいでしょうか。

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

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

box
記事: 2002
登録日時: 13年前

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

#2

投稿記事 by box » 7年前

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

そもそも、合計を一定値にしたい、という時点で乱数ではなくなっているような気もします。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

hide

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

#3

投稿記事 by hide » 7年前

適当に生成した乱数の合計が目標値の5割だったら全て倍にするとか?
その場合乱数の範囲も倍になるけど。

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

STR

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

#4

投稿記事 by STR » 7年前

乱数をたくさん生成して、合計値が指定値に1番近いように
ナップザック問題のように解くことは可能でしょうか?

hide

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

#5

投稿記事 by hide » 7年前

あなたが仕様を決めるのですから、不可能ってことはないでしょう。
でもそのやり方で出来た集合に含まれる要素は乱数というよりはただのランダムっぽい数でしょうね。
乱数は予測できたら意味ないですから。

STR

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

#6

投稿記事 by STR » 7年前

やってみてダメだったらまた投稿させていただくことにしました。
回答ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る