タスクは、間隔[0,1]から乱数を固定合計で出力するプログラムまたは関数を作成することです。 n
s
入力
n, n≥1
、生成する乱数の数
s, s>=0, s<=n
、生成される数値の合計
出力
区間[0,1]のすべての要素とに等しいすべての要素の合計を持つランダムなn
タプルの浮動小数点数は、便利な明確な方法で出力されます。すべての有効なタプルは、浮動小数点数の制限内に等しくある必要があります。s
n
これは、- n
次元の単位立方体とベクトルをn-1
通り抜ける(s/n, s/n, …, s/n)
- 次元の超平面内の点の交点から均一にサンプリングすることに等しい(1, 1, …, 1)
(3つの例については、図1の赤い領域を参照)。
図1:n = 3、合計0.75、1.75および2.75の有効な出力のプレーン
例
n=1, s=0.8 → [0.8]
n=3, s=3.0 → [1.0, 1.0, 1.0]
n=2, s=0.0 → [0.0, 0.0]
n=4, s=2.0 → [0.2509075946818119, 0.14887693388076845, 0.9449661625992032, 0.6552493088382167]
n=10, s=9.999999999999 → [0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999]
ルール
- プログラムは、少なくとも
n≤10
有効なs でマシン上で1秒未満で終了するはずです。 - 必要に応じて、プログラムを上限で排他的にすることができます。つまり
s<n
、半開区間[0,1)からの出力番号(2番目の例を破ります) - ご使用の言語が浮動小数点数をサポートしていない場合、小数点の後に少なくとも10桁の10進数で出力を偽造できます。
- 標準の抜け穴は許可されず、標準の入出力メソッドが許可されます。
- これはcode-golfであるため、バイト単位で測定された最短のエントリが優先されます。
This is equal to uniformly sampling from the intersection
-私はその交差点のコーナーからランダムに選択するプログラムを見ることができます。それは有効でしょうか?
s==0 or s==3
。の他のすべての値のs
場合、平面の面積は非ゼロであり、その平面上の点を一様ランダムに選択する必要があります。
s=2.99999999999, n=3
ますか?たとえば、倍数のランダムな実数を生成でき1e-9
ますか?