重みづけ、順位付けの抽選を行いたいです。
例として以下の事を挙げます。
当選確率が5倍、4倍、3倍、2倍、1倍の人が各1人ずついます。
その5人の中から、順位をつけて1~3位まで抽選で選出します。
どのような数式を用いて抽選を行えばよいのでしょうか?
ちなみに、現在試したことは、
各人に倍率に応じた区切り値を与え、その範囲内で乱数を発生させ、当選者を選出。
しかし、この方法だと乱数の重複や当選者の重複が出てしまいます。
発生させた乱数を固定し、rank関数によって順位付けを行うという方法もあるようですが、後述の理由によりそれ以外の方法で抽選を行いたいです。
よって、ポイントとしては、1度に当選者を選出できることと、発生させた乱数が重複しないこと、当選者が重複しないことかな思います。
ただし、倍率や人数は例として挙げただけなので、数がもっと増えても適用できるような方法でお願いします。
また、F9による更新で毎回変化させられるようにしたいです。(人が見ている中で抽選を行うので、演出としてF9長押しで抽選を行いたいと考えています)
条件が多いですが、よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 07:36
2020/02/18 08:24
2020/02/18 09:05
2020/02/19 00:49
2020/02/19 06:03
回答3件
0
ベストアンサー
投稿2020/02/19 00:35
編集2020/02/19 13:29総合スコア3047
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/19 04:56
2020/02/19 06:01
2020/02/19 15:35
0
抽選がよくわらかんけど・・・
5倍の確率の人は、5/(5+4+3+2+1)の確率で当選する
の部分だけ。
RANDBETWEEN 関数というのがあります。
指定した範囲の乱数を生成します。
以下のように設定すれば、1から倍率(?)の合計の範囲をランダムに出します。
これで、
発生させた乱数が重複しないこと、当選者が重複しないこと
を満たせると思います。
また、当選確率を100倍にしても値を変更するだけです。
当選回数ですが、
COUNTIFS関数というのがあり数値範囲を指定してカウントを取れます。
画像の例だと、
1ならC列、2,3ならD列、4,5,6ならE列が当選という感じで
E列なら、1+2より大きくて、1+2+3以内という条件なので、4,5,6が当選
(範囲指定に直前のSUMより大きくて、自分の列までの合計以内という条件でヒット)
※ちなみに、1とか0とか各抽選結果は単純に上記の条件をAND関数でつなぐ感じ。
最初は、1,0表示してSUMしてたけどCOUNTIFS使うと、なくてよかった。
抽選増やすのは行のコピー、挿入でいけるけど、ここが微妙な気もする
こんな感じにすると、当選確率は5倍でも必ず1位になるわけじゃないようになります。
追記
箱に1から5の数字のかかれた紙が数字の枚数分入っていて
3つの数字がそろうまで箱から引く
早く引けた順がランクってイメージで
1度当選したら、ゼロにしてあとは上記の繰り返し。
投稿2020/02/18 11:12
編集2020/02/19 01:31総合スコア4826
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 15:59
2020/02/18 23:34
2020/02/18 23:43
2020/02/19 04:59
2020/02/19 06:00
0
当選確率2倍というのが2回参加しているのと同じということであれば、こうなるでしょう。
Excel
1=MAX(RAND(),RAND())
参照で倍率を変えられるようにすることは、泥臭いですがこのようにして可能です(B列に倍率が入っているという想定です)
Excel
1=MAX(RAND(),IF(B2>1,RAND(),0),IF(B2>2,RAND(),0),IF(B2>3,RAND(),0),IF(B2>4,RAND(),0))
これにRANK()関数を使えばいいです。そうそう被ることはないと思いますが、気になるようであれば COUNTIF() を使って重複しないようにできるようです。
https://blog-tips.sekenkodqx.jp/2019/10/15/excel-same-rank/
-- 追記
255倍までは増やせました。MAX 関数の制限により引数が最大255個になっているためこれ以上増やせませんが、関数を重ねることで増やせると思います。と言っても今度は文字数制限があるので400ちょっとまでです。
Excel
1=MAX(RAND(),IF(B2>1,RAND(),0),IF(B2>2,RAND(),0),IF(B2>3,RAND(),0),IF(B2>4,RAND(),0),IF(B2>5,RAND(),0),IF(B2>6,RAND(),0),IF(B2>7,RAND(),0),IF(B2>8,RAND(),0),IF(B2>9,RAND(),0),IF(B2>10,RAND(),0),IF(B2>11,RAND(),0),IF(B2>12,RAND(),0),IF(B2>13,RAND(),0),IF(B2>14,RAND(),0),IF(B2>15,RAND(),0),IF(B2>16,RAND(),0),IF(B2>17,RAND(),0),IF(B2>18,RAND(),0),IF(B2>19,RAND(),0),IF(B2>20,RAND(),0),IF(B2>21,RAND(),0),IF(B2>22,RAND(),0),IF(B2>23,RAND(),0),IF(B2>24,RAND(),0),IF(B2>25,RAND(),0),IF(B2>26,RAND(),0),IF(B2>27,RAND(),0),IF(B2>28,RAND(),0),IF(B2>29,RAND(),0),IF(B2>30,RAND(),0),IF(B2>31,RAND(),0),IF(B2>32,RAND(),0),IF(B2>33,RAND(),0),IF(B2>34,RAND(),0),IF(B2>35,RAND(),0),IF(B2>36,RAND(),0),IF(B2>37,RAND(),0),IF(B2>38,RAND(),0),IF(B2>39,RAND(),0),IF(B2>40,RAND(),0),IF(B2>41,RAND(),0),IF(B2>42,RAND(),0),IF(B2>43,RAND(),0),IF(B2>44,RAND(),0),IF(B2>45,RAND(),0),IF(B2>46,RAND(),0),IF(B2>47,RAND(),0),IF(B2>48,RAND(),0),IF(B2>49,RAND(),0),IF(B2>50,RAND(),0),IF(B2>51,RAND(),0),IF(B2>52,RAND(),0),IF(B2>53,RAND(),0),IF(B2>54,RAND(),0),IF(B2>55,RAND(),0),IF(B2>56,RAND(),0),IF(B2>57,RAND(),0),IF(B2>58,RAND(),0),IF(B2>59,RAND(),0),IF(B2>60,RAND(),0),IF(B2>61,RAND(),0),IF(B2>62,RAND(),0),IF(B2>63,RAND(),0),IF(B2>64,RAND(),0),IF(B2>65,RAND(),0),IF(B2>66,RAND(),0),IF(B2>67,RAND(),0),IF(B2>68,RAND(),0),IF(B2>69,RAND(),0),IF(B2>70,RAND(),0),IF(B2>71,RAND(),0),IF(B2>72,RAND(),0),IF(B2>73,RAND(),0),IF(B2>74,RAND(),0),IF(B2>75,RAND(),0),IF(B2>76,RAND(),0),IF(B2>77,RAND(),0),IF(B2>78,RAND(),0),IF(B2>79,RAND(),0),IF(B2>80,RAND(),0),IF(B2>81,RAND(),0),IF(B2>82,RAND(),0),IF(B2>83,RAND(),0),IF(B2>84,RAND(),0),IF(B2>85,RAND(),0),IF(B2>86,RAND(),0),IF(B2>87,RAND(),0),IF(B2>88,RAND(),0),IF(B2>89,RAND(),0),IF(B2>90,RAND(),0),IF(B2>91,RAND(),0),IF(B2>92,RAND(),0),IF(B2>93,RAND(),0),IF(B2>94,RAND(),0),IF(B2>95,RAND(),0),IF(B2>96,RAND(),0),IF(B2>97,RAND(),0),IF(B2>98,RAND(),0),IF(B2>99,RAND(),0),IF(B2>100,RAND(),0),IF(B2>101,RAND(),0),IF(B2>102,RAND(),0),IF(B2>103,RAND(),0),IF(B2>104,RAND(),0),IF(B2>105,RAND(),0),IF(B2>106,RAND(),0),IF(B2>107,RAND(),0),IF(B2>108,RAND(),0),IF(B2>109,RAND(),0),IF(B2>110,RAND(),0),IF(B2>111,RAND(),0),IF(B2>112,RAND(),0),IF(B2>113,RAND(),0),IF(B2>114,RAND(),0),IF(B2>115,RAND(),0),IF(B2>116,RAND(),0),IF(B2>117,RAND(),0),IF(B2>118,RAND(),0),IF(B2>119,RAND(),0),IF(B2>120,RAND(),0),IF(B2>121,RAND(),0),IF(B2>122,RAND(),0),IF(B2>123,RAND(),0),IF(B2>124,RAND(),0),IF(B2>125,RAND(),0),IF(B2>126,RAND(),0),IF(B2>127,RAND(),0),IF(B2>128,RAND(),0),IF(B2>129,RAND(),0),IF(B2>130,RAND(),0),IF(B2>131,RAND(),0),IF(B2>132,RAND(),0),IF(B2>133,RAND(),0),IF(B2>134,RAND(),0),IF(B2>135,RAND(),0),IF(B2>136,RAND(),0),IF(B2>137,RAND(),0),IF(B2>138,RAND(),0),IF(B2>139,RAND(),0),IF(B2>140,RAND(),0),IF(B2>141,RAND(),0),IF(B2>142,RAND(),0),IF(B2>143,RAND(),0),IF(B2>144,RAND(),0),IF(B2>145,RAND(),0),IF(B2>146,RAND(),0),IF(B2>147,RAND(),0),IF(B2>148,RAND(),0),IF(B2>149,RAND(),0),IF(B2>150,RAND(),0),IF(B2>151,RAND(),0),IF(B2>152,RAND(),0),IF(B2>153,RAND(),0),IF(B2>154,RAND(),0),IF(B2>155,RAND(),0),IF(B2>156,RAND(),0),IF(B2>157,RAND(),0),IF(B2>158,RAND(),0),IF(B2>159,RAND(),0),IF(B2>160,RAND(),0),IF(B2>161,RAND(),0),IF(B2>162,RAND(),0),IF(B2>163,RAND(),0),IF(B2>164,RAND(),0),IF(B2>165,RAND(),0),IF(B2>166,RAND(),0),IF(B2>167,RAND(),0),IF(B2>168,RAND(),0),IF(B2>169,RAND(),0),IF(B2>170,RAND(),0),IF(B2>171,RAND(),0),IF(B2>172,RAND(),0),IF(B2>173,RAND(),0),IF(B2>174,RAND(),0),IF(B2>175,RAND(),0),IF(B2>176,RAND(),0),IF(B2>177,RAND(),0),IF(B2>178,RAND(),0),IF(B2>179,RAND(),0),IF(B2>180,RAND(),0),IF(B2>181,RAND(),0),IF(B2>182,RAND(),0),IF(B2>183,RAND(),0),IF(B2>184,RAND(),0),IF(B2>185,RAND(),0),IF(B2>186,RAND(),0),IF(B2>187,RAND(),0),IF(B2>188,RAND(),0),IF(B2>189,RAND(),0),IF(B2>190,RAND(),0),IF(B2>191,RAND(),0),IF(B2>192,RAND(),0),IF(B2>193,RAND(),0),IF(B2>194,RAND(),0),IF(B2>195,RAND(),0),IF(B2>196,RAND(),0),IF(B2>197,RAND(),0),IF(B2>198,RAND(),0),IF(B2>199,RAND(),0),IF(B2>200,RAND(),0),IF(B2>201,RAND(),0),IF(B2>202,RAND(),0),IF(B2>203,RAND(),0),IF(B2>204,RAND(),0),IF(B2>205,RAND(),0),IF(B2>206,RAND(),0),IF(B2>207,RAND(),0),IF(B2>208,RAND(),0),IF(B2>209,RAND(),0),IF(B2>210,RAND(),0),IF(B2>211,RAND(),0),IF(B2>212,RAND(),0),IF(B2>213,RAND(),0),IF(B2>214,RAND(),0),IF(B2>215,RAND(),0),IF(B2>216,RAND(),0),IF(B2>217,RAND(),0),IF(B2>218,RAND(),0),IF(B2>219,RAND(),0),IF(B2>220,RAND(),0),IF(B2>221,RAND(),0),IF(B2>222,RAND(),0),IF(B2>223,RAND(),0),IF(B2>224,RAND(),0),IF(B2>225,RAND(),0),IF(B2>226,RAND(),0),IF(B2>227,RAND(),0),IF(B2>228,RAND(),0),IF(B2>229,RAND(),0),IF(B2>230,RAND(),0),IF(B2>231,RAND(),0),IF(B2>232,RAND(),0),IF(B2>233,RAND(),0),IF(B2>234,RAND(),0),IF(B2>235,RAND(),0),IF(B2>236,RAND(),0),IF(B2>237,RAND(),0),IF(B2>238,RAND(),0),IF(B2>239,RAND(),0),IF(B2>240,RAND(),0),IF(B2>241,RAND(),0),IF(B2>242,RAND(),0),IF(B2>243,RAND(),0),IF(B2>244,RAND(),0),IF(B2>245,RAND(),0),IF(B2>246,RAND(),0),IF(B2>247,RAND(),0),IF(B2>248,RAND(),0),IF(B2>249,RAND(),0),IF(B2>250,RAND(),0),IF(B2>251,RAND(),0),IF(B2>252,RAND(),0),IF(B2>253,RAND(),0),IF(B2>254,RAND(),0))
投稿2020/02/18 08:04
編集2020/02/19 01:30総合スコア13749
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 09:07
2020/02/18 09:14
2020/02/18 11:25
2020/02/18 16:00
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。