質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

6417閲覧

一度発生させた乱数を発生させたくない

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/01/04 04:31

一度発生させた乱数を発生させたくないです。

index = [] for i in range(10): j = random.randint(0, 10) k = random.randint(0, 30) index.append(j) index.append(k)

とコードを書いたのですが、これだとfor文が回った時、jとkが以前のfor文が回った時と同じ乱数を発生させてしまう可能性があります。一度発生させた乱数を発生させないようにする方法はあるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

『重複なし』乱数を用いたい場合、リストをシャッフルするのが簡潔です。

Python

1import random 2 3i_list = list(range(10)) 4random.shuffle(i_list) 5 6j_list = list(range(30)) 7random.shuffle(j_list) 8 9indice = [] 10for i_elem, j_elem in zip(i_list, j_list): 11 indice.append(i_elem) 12 indice.append(j_elem)

あ、ただこれだと0から9が重複する可能性はありますね。
そこらへんの仕様はどうしたいのでしょうか。

投稿2018/01/04 04:36

編集2018/01/04 04:41
LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

同じ値が配列indexに入って欲しくない、という意味でしたら、集合set()を使うといいと思います。

python

1from random import randint 2 3index_set = set() 4 5for i in range(10): 6 j = randint(0,10) 7 k = randint(0,30) 8 9 index_set.add(j) 10 index_set.add(k) 11 12index = list(index_set)

##追記

要素数が20となるように修正したバージョンです。

python

1from random import randint 2 3index_set = set() 4 5while len(index_set) < 20: 6 index_set.add(randint(0,30)) 7 8index = list(index_set)

重複は全く許さない場合の仕様です。

投稿2018/01/04 04:39

編集2018/01/04 11:30
namnium1125

総合スコア2043

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2018/01/04 04:42

無限ループにして脱出条件len(index_set) == 20を用意しないと、要素数が合わなそうです。
namnium1125

2018/01/04 04:56

重複しないことだけ考えてました…確かにそうですね。ご指摘ありがとうございます。m(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問