[1,4]
の範囲の4つの乱数を均一な分布で生成したいと考えています。たとえば、12の要素のシーケンスに対して、それぞれの数値が3回表示されます。一様分布で整数のシーケンスを生成するにはどうすればよいですか?
0
A
答えて
1
を使用して、はるかに容易になります
from random import randint
def getNum1To4(runs):
occurences = {n+1:0 for n in range(4)}
for i in range(runs):
options = [n for n in occurences if occurences[n] < runs/4]
choice = options[randint(0, len(options) - 1)]
occurences[choice] += 1
yield choice
出力:
>>> runs = 8
>>> gen = getNum1To4(8)
>>> for n in range(runs): print gen.next()
2
1
3
1
3
4
4
2
を
0
このタスクのリストを使用すると、使用可能な番号のプールに重複が含まれないようにすることができます。私はあなたが12のリスト内のセットブロックに表示する必要があるかどうか、または完全にランダム化したいかどうかはわかりません。前者の場合は、最後のシャッフルを削除します。
from random import shuffle
choice_pool = [x for x in range(1, 5)]
random_output = []
number_of_runs = 4
for x in range(number_of_runs):
shuffle(choice_pool)
random_output += choice_pool
shuffle(random_output)
print random_output
0
このアプローチは動作するはずです:
import random
foo = [i for i in range(1, 5)] * 4
print random.sample(foo, len(foo))
出力:[2, 2, 3, 1, 4, 4, 3, 4, 1, 1, 3, 2, 1, 4, 3, 2]
0
これはあなたを助けるかもしれない -
import random
def foo(number_of_runs, lower_limit, upper_limit):
turns = number_of_runs // (upper_limit - lower_limit + 1)
arr = list(range(lower_limit, upper_limit + 1)) * turns
random.shuffle(arr)
return arr
print(foo(12, 1, 4))
0
は
import random
x = [i for i in range(1, 5)] * 3
random.shuffle(x) # shuffle the sequence x in place
# Output
[4, 3, 1, 3, 2, 2, 3, 4, 4, 1, 2, 1]
、これを試してみてください
要素がfloatまたはdoubleであれば、答えはあなたが発電機を使用することができますnumpy.random.uniform
import numpy as np
x = np.random.uniform(1, 5, 12)
# Output
array([ 4.18515267, 4.87403138, 3.43580119, 2.62828693, 3.77675348,
4.15627119, 4.02190688, 3.56667674, 1.31115154, 1.74971624,
3.20515834, 1.75240044])
関連する問題
- 1. 2Dで一様に分布する点
- 2. 一様分布のランダムビットセットを生成する方法
- 3. ブートストラップで一様に分布した行(20)を作成する
- 4. 丸い矩形内に一様分布のランダムな位置を生成する
- 5. 乱数生成を一様に分散
- 6. 一様な初期化はどのようにすればよいですか?
- 7. MATLABで等しくない数値のシーケンスを作成するにはどうすればよいですか?
- 8. SlimDXでHLSLの一様変数の値を設定するにはどうすればよいですか?
- 9. PHPで一意の乱数を生成するにはどうすればよいですか?
- 10. 整数範囲から正規分布乱数を生成する方法は?
- 11. Javaソースコードからシーケンス図を生成するにはどうすればよいですか?
- 12. 既存のコントローラの仕様を生成するにはどうすればよいですか?
- 13. JAVA 1から24の間で整数を生成するにはどうすればよいですか?各整数の組が必要です
- 14. ユーザー入力のみの一様変数を設定するにはどうすればよいですか?
- 15. Matlabの散布図でzcolorスケールを調整するにはどうすればよいですか?
- 16. AutoFixture 3で生成される整数は一意ですか?
- 17. カテゴリのない散布図を非分類データでプロットするにはどうすればよいですか?
- 18. 一様分布の乱数セットの作成
- 19. 長い整数を携帯電話番号に分割するにはどうすればよいですか?
- 20. Pythonで平均、分散、スキュー、尖度を使って分布を生成するにはどうすればよいですか?
- 21. ¿番号シーケンスが成長しないようにするにはどうすればよいですか?
- 22. 整数をNSDictionaryから取り出して整数にするにはどうすればよいですか?
- 23. TOMCATでスタックトレースを生成するにはどうすればよいですか?
- 24. デスクトップアプリケーションでファイルプレビューサムネイルを生成するにはどうすればよいですか?
- 25. jmeterでダッシュボードレポートを生成するにはどうすればよいですか?
- 26. simple_formでキャンセルボタンを生成するにはどうすればよいですか?
- 27. SQL Serverで一意の増加する整数値を生成するにはどうすればよいですか?
- 28. MySQLで最も一般的な値のシーケンスを表示するにはどうすればよいですか?
- 29. 異なる整数を別の整数と比較するにはどうすればよいですか?
- 30. TextFieldが整数であるかどうかを確認するにはどうすればよいですか?
それはランダムではありません:/ – linusg
どのように定義する "出現eq ually "? [uniform distrubution](https://en.wikipedia.org/wiki/Uniform_distribution_%28discrete%29)を意味しますか? – gdlmx
@ linusgおそらく、各要素が同じように表示される可能性がある、ランダムな順序で要素を持つ任意の長さのシーケンスを生成したいという問題です。私はA/Bテストで同様のものを使用しました。SMS Aを受け取るには、テスト全体で一定のパーセンテージの人が必要でしたが、テストに参加した人数は可変でした。あなたは私の答えを一例として見ることができます。いずれかの人のためのSMSの選択はランダム化されました。 – roganjosh