1

私はビンゴ カードに取り組んでいますが、randint を使用して別の数字を生成できないようです。今回は b にすべて異なる番号が含まれている可能性がありますが、次回は重複する番号がいくつかあります。

重複せずに異なる番号を生成するようにするにはどうすればよいですか?

ありがとう。

import random

class Card:
    def __init__(self):
        self.b = []
        self.i = []
        self.n = []
        self.g = []
        self.o = []

        for x in range(0, 5):
            r = random.randint(1, 15)
            self.b.append(r)

        print(self.b)
        print(self.i)
        print(self.n)
        print(self.g)
        print(self.o)

p = Card()
4

5 に答える 5

5

この回答から

self.b = random.sample(range(1, 16), 5)
于 2013-03-16T22:37:10.053 に答える
2

彼はどうですか:

while len(self.b) < 5:
  r = random.randint(1, 15)
  if not r in self.b:
    self.b.append(r)
于 2013-03-16T22:35:30.880 に答える
1

1 から 15 までのランダムな整数を 5 つ選択すると、いくつかの重複が発生する可能性があります。代わりに、置換なしで選択してみることができます:

self.b = random.sample(range(1,16),5)
于 2013-03-16T22:38:24.423 に答える
0

np.random.shuffle配列をその場で変更する which を使用できます

>>> a = np.arange(1,16)
>>> np.random.shuffle(a)
>>> a[0:5]
array([ 9, 11,  7,  4, 10])
>>> np.random.shuffle(a)
array([ 3,  1, 13,  5,  8])

だから多分何か

>>> class Card:
      def __init__(self,arr):
        np.random.shuffle(arr)
        self.b = arr[0:5]
        #etc

>>> nums = np.arange(1,16)
>>> p = Card(nums)
>>> p.b
array([ 8,  2,  6, 13,  9])
于 2013-03-30T00:45:31.607 に答える
0

sampleinに加えて、numpy 1.7.0 で新しく追加された関数をrandom使用できます。choice

from numpy import random
self.b = list(random.choice(range(1,16), size=5, replace=False))

pその利点は、母集団の各エントリに関連付けられた確率を含むオプションのパラメーターを取ることです。これは、デフォルトのケースで統一されています。

于 2013-03-16T22:45:53.180 に答える