メモ書き:Random

例えば、今日食べる物とかテキトーに決めたいことあるよネ!そんな時はこれだヨ!random!
………いやこの前振りはあまりにも雑だな。カロリーメイトとかCompがすべてを解決してくれるから迷う必要ないわ。


randomのメモ書きです。例のごとく私が使うものしか書いてません。

import

import random

元から入ってるのでpipやらcondaやらpuipuiやらなんやらはない。


なんか一つ選んで。

e = [0, 556, 777, 1000]
random.choice(e)

リスト、タプルでこれはできるがdictやsetではできない。(それはそう)

r = {"Atri":"Natsuki", "Glare":"User", "Lucy","Master"}

#Random Key:
random.choice(list(r.keys()))
#Value
random.choice(list(r.values()))
#Key&Value
random.choice(list(r.items()))

辞書でやるならこうがまるいって以前どこかで見た。

A = "DAMNATION"
random.choice(A)

文字列でこれを行うとどれか一つの文字を取り出す。


いくつか選んで。

A = ["黒殻","巡礼","異神","日輪","永夢","蝕獣","魔女","終涙","無銘"]
print(random.sample(A, 4))
print(random.choices(A, k=4))
print(random.choices(A, k=10))
['永夢', '魔女', '黒殻', '日輪']
['日輪', '蝕獣', '魔女', '蝕獣']
['永夢', '終涙', '黒殻', '日輪', '永夢', '黒殻', '巡礼', '終涙', '無銘', '巡礼']

sampleだと重複なしで指定数、choicesだと重複有でk個ランダムで取り出す。どうやらkは指定しないといけないらしい(伝聞)
sampleは重複なしではあるが、リストなどに同一の値が入っているとき同じ値が出てきたりする。
choicesのkは抽出元の要素数より多くできるが、sampleではできない。

d = "luna-eclipse"
print(random.sample(d, 4))
['l', 'n', '-', 'l']

文字列でもできる。
sampleの「重複なしではあるが、リストなどに同一の値が入っているとき同じ値が出てきたりする」という例でもある。

weightsを指定すると重み付けありきのランダム抽出ができるらしい。

import random
p = random.sample(L)
L.remove(p)

とかするんだっけ?何に使おうとしたのか知らないけど。

乱数生成1(int)

random.randint(2855, 2859)

整数の乱数を生成する。この場合、生成される可能性がある乱数は2855, 2856, 2857, 2858, 2859


乱数生成2(float)

random.random()

0~1の間のfloat乱数

print(random.uniform(33.4, 2005))

指定した2つの数字の間のfloat乱数。指定する2つの数字はfloatでもintでもいい。


乱数シード値

random.seed(271)

並び替え

l=["É","p","é","e","L","i","o","n"]
l2 = random.sample(l, len(l))

他にも方法はあるけど……

書き残し&余談

確かだけど、正規分布に基づく乱数とかそんな感じのがいくつかあったはず。今は使ってないけどいつかどこかで使いそうな気はしてるし使うときに書くんじゃないですかね。
それから余談。このコード群、4と10以外全て元ネタがあります。全部わかったら私に言ってください。全問正解していた場合、要注意人物として注意リストに叩き込んで差し上げます。そんなに難しくないのですがわざわざこんなことろまで見に来てかつ全問正解する者がいるとは思っていません。