へにっくすの掲示板日記

乱数の個数を限定する

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

乱数の個数を限定する

投稿記事 by へにっくす » 10年前

以下の投稿。

http://dixq.net/forum/viewtopic.php?f=3&t=16255

何気なく答えたら、ほかの回答者がわらわらと・・・
(^^;

単純な問題なだけに、いろんなサンプルコードが書けるのは
質問者にとっていいのか悪いのか 笑

質問者さ~ん?
【追記1】
質問者さんの返事がきましたね
解決されました。
結構複雑・・・そりゃ複雑にいくらでもできるからな
とか思ったり
最後に編集したユーザー へにっくす on 2015年1月20日(火) 04:42 [ 編集 1 回目 ]

アバター
usao
記事: 1889
登録日時: 12年前

Re: 乱数の個数を限定する

投稿記事 by usao » 10年前

正直,へにっくすさんの最初の1行だけで十分だと思う.
(私が見たときには,配列用意してソートする方法しか書かれてなかったから
 「実際には, 0が1万個で 1が8700個 くらいなんですが…」とかいう話だと困りそう(?)なので別方向のを書いてみたのですが,多分余計.)

どうやるのかという方法論みたいなのを示せば十分な段階(だと思うんだけど)で
シャッフルだの乱数取得に何を使うべきなのかとかいう話を持ち出すのはちと性急すぎると思うのですが,どうなんでしょうね.
(まぁ情報が無いよりはあった方がいいのかもですが,ちょっと怒涛すぎるというか,面食らうんじゃないかなぁ,と.)

ISLe
記事: 2650
登録日時: 14年前

Re: 乱数の個数を限定する

投稿記事 by ISLe » 10年前

質問自体は均等に選択する方法を問うているだけですよね。
わたしなら、質問に「のように」と書かれているので乱数の取得方法は現場で決まる(こちらで決めることではない)と考えます。

C++では(やっとのことで)乱数の質に関する改善が行われるようになったのが嬉しいのかもしれないですが
この手の話題が出るといちいち乱数の質を持ち出してくるのを見ると面倒くさいなあと思います。

アバター
GRAM
記事: 164
登録日時: 14年前

RE: 乱数の個数を限定する

投稿記事 by GRAM » 10年前

なれさえすればNo.8のコードが何も考える必要のない(ミスの発生しない)コードだと思いますね。
自分はFill_nとかすこしでも直観的でないものは使いませんけど、
ぶっちゃけ質問の答えは

①コンテナaに数字を入れておく。

CODE:

std::random_device seed;
std::shuffle(a.begin(), a.end(), std::mt19937(seed()));
これだけで事足りると思います。
非常に直観的な最低限のコードですね。
標準さん偉い
まぁC++じゃダメなんでしょうがね…
最後に編集したユーザー GRAM on 2015年1月20日(火) 21:54 [ 編集 1 回目 ]

ISLe
記事: 2650
登録日時: 14年前

Re: 乱数の個数を限定する

投稿記事 by ISLe » 10年前

質問者が完璧な質問をするのが前提の掲示板だから、極めてシンプルなコードで回答するのが最善なのですね。

ISLe
記事: 2650
登録日時: 14年前

Re: 乱数の個数を限定する

投稿記事 by ISLe » 10年前

規格がどうので横道にそれるのが目立ったらさっそくまねするひとも目立つようになりましたね。
最後に編集したユーザー ISLe on 2015年1月20日(火) 22:38 [ 編集 3 回目 ]

ISLe
記事: 2650
登録日時: 14年前

Re: 乱数の個数を限定する

投稿記事 by ISLe » 10年前

配列に全データを格納するというのは、へにっくすさんの提案ですよね。
それに対して質問者から何も反応のないまま話が展開していくのは、横道にそれてると感じるのです。
標準を示したいから乗っかったわけではないのでしょうけども。

アバター
usao
記事: 1889
登録日時: 12年前

Re: 乱数の個数を限定する

投稿記事 by usao » 10年前

>なれさえすれば

相手が なれているかどうか を質問内容のレベルや質問文の雰囲気(?)等から察してあげるのも
「アットホーム」とやらなのかな?とか思ったり.
個人的にはなまじC++でサンプルコードを書いちゃったのを反省するレベル.
(へにっくすさんは最初からCで書いてるんだよなぁ さすがだ.)

ISLe
記事: 2650
登録日時: 14年前

Re: 乱数の個数を限定する

投稿記事 by ISLe » 10年前

みけCATさんが途中から指摘してますが、質問のコードは抽選確率が固定ですが、回答は残り当選本数に応じて変動するコードで話が進んでます。

ソーシャルゲームのガチャなんかで残り当選本数に応じて抽選確率が変わるとしたら、人気アイテムの抽選確率にサーバー負荷が大きく影響受けることになります。
メルセンヌ・ツイスタは一様乱数としての質が高いから当選が偏るなんてことは起きないのでしょうかね。

質問に書かれていない前提で話が進むのはよく見られる光景ですけども
知らないことを教えてくれるのだから良いことなのでしょうね。

(追記)
回答者が前提を加えること自体は(それが明らかにされていれば)問題ないと思います。
他の回答者が質問者を無視して(いるかのように)それに乗っかって話を進めることが疑問に思う点です。
最後に編集したユーザー ISLe on 2015年1月21日(水) 17:52 [ 編集 3 回目 ]

アバター
usao
記事: 1889
登録日時: 12年前

Re: 乱数の個数を限定する

投稿記事 by usao » 10年前

? 話がよくわからない.

0と1が各5個ずつ出なきゃならないときに
1回目の試行では 0の出る確率が1/2,1の確率が1/2 だけど
2回目の試行では 一方が4/9, 他方が 5/9 になるのが良くないということ?

一方が5個全て出てしまうまでは,常に{1/2,1/2}で決めなさい,というような話…?

ISLe
記事: 2650
登録日時: 14年前

Re: 乱数の個数を限定する

投稿記事 by ISLe » 10年前

usao さんが書きました:0と1が各5個ずつ出なきゃならないときに
1回目の試行では 0の出る確率が1/2,1の確率が1/2 だけど
2回目の試行では 一方が4/9, 他方が 5/9 になるのが良くないということ?
それが良いか良くないかということではなくて、まだ分かっていない段階で良いか良くないかを決め付けることが良くない。

質問の投稿からの可能性として
1. 0と1はどちらかが無くなるまでそれぞれ1/2の確率で出て欲しい
2. 0と1は残りの本数に応じた確率で出て欲しい
どちらもあり得ます。
質問にはどちらとも書かれていません。
が、提示されたコードは1に近い。
が、回答者は確認しないで2を前提として進めている。
最後に編集したユーザー ISLe on 2015年1月21日(水) 19:08 [ 編集 3 回目 ]