Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

01 擬似乱数

擬似乱数

# 01-01. 擬似乱数列の生成
import random

for i in range(100):
    r = random.randrange(1, 1001)
    print(r)
626
416
4
787
284
427
17
749
265
440
977
799
697
53
617
51
849
837
940
713
79
11
147
688
182
241
711
832
761
342
528
288
572
193
786
201
67
363
619
642
882
989
934
796
516
362
863
929
561
742
46
454
416
78
954
360
847
324
145
74
471
735
363
730
212
59
435
610
31
6
344
279
988
834
316
665
851
139
826
204
608
995
578
90
45
290
515
57
589
433
313
221
926
809
963
742
249
2
110
921

シード

同じシード (seed)を与えると同じ乱数列が再現され,シミュレーションの再現性を確保できる.

# 01-02. シード
random.seed(1)
for i in range(100):
    r = random.randrange(1, 1001)
    print(r)
138
583
868
822
783
65
262
121
508
780
461
484
668
389
808
215
97
500
30
915
856
400
444
623
781
786
3
713
457
273
739
822
235
606
968
105
924
326
32
23
27
666
555
10
962
903
391
703
222
993
433
744
30
541
228
783
449
962
508
567
239
354
237
694
225
780
471
976
297
949
23
427
858
939
570
945
658
103
191
645
742
881
304
124
761
341
918
739
997
729
513
959
991
433
520
850
933
687
195
311

乱数生成:シーケンス

# 01-03. シーケンス操作 choice, choices
a_list = [23, 22, 32, 12, 31, 30, 3, 35, 26, 36]

# choice
print("# random.choice")
for i in range(30):
    r = random.choice(a_list)
    print(r)

# choices
weights = [0, 1, 1, 1, 1, 1, 1, 1, 1, 10]
print("# random.choices")
for i in range(30):
    r = random.choices(a_list, weights=weights, k=5)
    print(r)
# random.choice
31
36
35
26
3
36
23
35
12
3
3
32
30
26
30
22
35
26
22
32
26
3
30
35
23
35
23
31
36
36
# random.choices
[36, 36, 31, 30, 22]
[31, 36, 36, 26, 35]
[36, 35, 36, 36, 36]
[36, 35, 36, 36, 36]
[36, 12, 36, 31, 36]
[36, 35, 36, 36, 26]
[36, 26, 22, 36, 36]
[3, 36, 36, 36, 36]
[31, 32, 36, 36, 36]
[22, 36, 32, 36, 36]
[36, 3, 30, 36, 31]
[3, 31, 30, 36, 36]
[36, 3, 36, 36, 12]
[3, 35, 36, 30, 30]
[36, 36, 36, 26, 36]
[30, 26, 22, 36, 36]
[36, 26, 36, 36, 36]
[36, 36, 36, 22, 36]
[36, 36, 26, 36, 12]
[31, 22, 32, 32, 36]
[3, 12, 36, 12, 36]
[36, 36, 31, 36, 36]
[36, 36, 36, 36, 22]
[31, 32, 36, 36, 36]
[36, 36, 26, 36, 22]
[36, 26, 3, 12, 36]
[36, 36, 12, 26, 30]
[32, 35, 36, 36, 36]
[36, 36, 36, 32, 22]
[12, 12, 36, 30, 3]
# 01-04. シーケンス操作 sample
a_list = [23, 22, 32, 12, 31, 30, 3, 35, 26, 36]

# sample
print("# random.sample")
for i in range(30):
    r = random.sample(a_list, k=5)
    print(r)

# シャッフル
print("# random.sample シャッフル")
for i in range(30):
    r = random.sample(a_list, k=len(a_list))
    print(r)
# random.sample
[26, 31, 30, 32, 3]
[22, 31, 12, 3, 26]
[35, 32, 22, 26, 23]
[3, 22, 36, 35, 26]
[32, 30, 22, 31, 3]
[3, 22, 12, 31, 23]
[31, 30, 36, 35, 3]
[22, 35, 31, 23, 3]
[31, 23, 26, 35, 12]
[22, 23, 12, 36, 31]
[3, 32, 22, 12, 35]
[12, 32, 22, 36, 3]
[26, 31, 36, 30, 12]
[30, 22, 12, 36, 32]
[23, 36, 26, 3, 32]
[36, 30, 35, 12, 32]
[3, 22, 26, 32, 31]
[35, 22, 31, 26, 36]
[26, 35, 30, 32, 22]
[26, 12, 31, 22, 3]
[30, 22, 31, 23, 12]
[22, 30, 12, 35, 32]
[23, 30, 32, 35, 31]
[31, 12, 30, 23, 36]
[36, 22, 12, 26, 23]
[12, 3, 22, 32, 31]
[22, 36, 23, 30, 35]
[31, 30, 35, 12, 22]
[22, 26, 30, 23, 31]
[32, 36, 26, 22, 35]
# random.sample シャッフル
[31, 22, 36, 26, 3, 30, 23, 35, 12, 32]
[31, 3, 32, 23, 30, 22, 35, 26, 36, 12]
[26, 31, 35, 3, 36, 12, 23, 22, 32, 30]
[31, 35, 23, 3, 30, 12, 26, 36, 22, 32]
[36, 32, 26, 35, 3, 12, 31, 23, 30, 22]
[35, 23, 32, 31, 36, 3, 12, 30, 26, 22]
[30, 35, 26, 22, 36, 12, 32, 31, 3, 23]
[23, 22, 30, 26, 31, 3, 32, 35, 12, 36]
[32, 35, 22, 3, 23, 31, 12, 30, 36, 26]
[3, 12, 23, 26, 30, 36, 32, 22, 35, 31]
[26, 22, 31, 30, 23, 32, 3, 12, 35, 36]
[12, 3, 26, 36, 22, 32, 35, 23, 30, 31]
[22, 3, 26, 23, 30, 32, 31, 35, 36, 12]
[12, 26, 35, 31, 23, 30, 22, 36, 3, 32]
[31, 32, 12, 26, 3, 36, 30, 35, 22, 23]
[26, 30, 35, 12, 23, 22, 3, 36, 31, 32]
[23, 22, 36, 31, 32, 26, 35, 30, 3, 12]
[3, 26, 30, 36, 31, 32, 23, 12, 22, 35]
[30, 31, 3, 32, 36, 26, 12, 23, 22, 35]
[12, 26, 23, 32, 30, 31, 22, 36, 3, 35]
[32, 35, 12, 36, 31, 23, 26, 3, 22, 30]
[30, 22, 35, 36, 26, 32, 23, 3, 12, 31]
[31, 32, 22, 3, 36, 23, 26, 35, 12, 30]
[32, 35, 31, 12, 22, 3, 23, 30, 26, 36]
[22, 30, 36, 26, 12, 23, 35, 32, 31, 3]
[3, 31, 26, 22, 35, 36, 30, 12, 32, 23]
[22, 26, 30, 12, 31, 35, 23, 3, 36, 32]
[30, 12, 3, 31, 26, 22, 36, 35, 32, 23]
[31, 12, 23, 3, 36, 26, 32, 22, 35, 30]
[12, 22, 32, 3, 31, 36, 26, 35, 30, 23]

乱数生成:連続確率分布

# 01-05. 連続確率分布

# 一様分布 random
r_uniform_1_list = []
for i in range(100):
    r = random.random()
    r_uniform_1_list.append(r)
print("一様分布(0~1)", r_uniform_1_list)

# 一様分布 uniform
r_uniform_2_list = []
for i in range(100):
    r = random.uniform(5, 10)
    r_uniform_2_list.append(r)
print("一様分布(5~10)", r_uniform_2_list)

# 正規分布
r_gauss_list = []
for i in range(100):
    r = random.gauss(0, 1)
    r_gauss_list.append(r)
print("正規分布", r_gauss_list)
一様分布(0~1) [0.5265923229048832, 0.13861974163698576, 0.13809799323879335, 0.7157497662356598, 0.36108976833344886, 0.7513763114866316, 0.2404936039137613, 0.7181581423147705, 0.7184769263967773, 0.3054958810525106, 0.10638543387964139, 0.3970078551871341, 0.49236150032733617, 0.09997421469778434, 0.18676126036778584, 0.055343052815480465, 0.5975135715550439, 0.8888761233719161, 0.2165577909596218, 0.03471343587681974, 0.7039235944191828, 0.8149105587896851, 0.9641215867338897, 0.6131789568237019, 0.34244316565189636, 0.8378686180306556, 0.11806710521312225, 0.6926369381896267, 0.0952308492516365, 0.3997057470173988, 0.49502288140217887, 0.377894273032341, 0.16859757880447968, 0.2317173126022275, 0.8201499974998944, 0.46257580479248983, 0.5799327447235099, 0.2119070176161595, 0.7149350587865332, 0.33011725914726364, 0.5936185874860408, 0.9094870627958156, 0.9943934088859884, 0.04621794831314552, 0.797442711928691, 0.8575878253608825, 0.3195744372072056, 0.3831476259821177, 0.5802537596763331, 0.9188402309707125, 0.39992859333804187, 0.8800301687734118, 0.7585605282041756, 0.1522730797062255, 0.9136799203638493, 0.015181052589951283, 0.1451782500468748, 0.6648112128866874, 0.05711968663889244, 0.3794898856741835, 0.12997885852693347, 0.4628892738532562, 0.8399803437546011, 0.9060843513491861, 0.03546964032188504, 0.060851756668864554, 0.8406240353653226, 0.0428147832556115, 0.273590265071345, 0.11743671769283648, 0.09103770695709379, 0.027622889724836064, 0.6375130126648525, 0.7446142679398566, 0.6867713765586763, 0.8456227719182262, 0.6630161884986934, 0.38970192767534384, 0.6310630237160113, 0.9695948083687032, 0.6416033330232526, 0.24309173409213014, 0.0601840957099572, 0.9351659997400953, 0.5904954982942084, 0.3496147426104088, 0.6053527496610309, 0.5602575960634735, 0.5221717727865457, 0.06080464202945668, 0.3532275523761348, 0.4126500229395509, 0.199368340608838, 0.880105231228507, 0.4241197773808294, 0.6623856654024448, 0.7135464494458958, 0.7432830602725053, 0.7211152909126985, 0.7522085016390995]
一様分布(5~10) [6.257903470753821, 9.882018383464484, 5.7550487689193, 9.593236975496506, 9.272843876037815, 9.260821455899837, 5.26405627418767, 5.456090417219498, 9.06527901116161, 7.3458341323259395, 6.8512659556896285, 9.923437361146787, 5.2005896764482005, 7.657325269028024, 7.216748880753536, 5.641015615143388, 6.975941313929937, 8.53823702405251, 9.41157804601204, 5.123098557316717, 7.622547793015446, 5.451882975176292, 9.001967285775175, 5.428926397183523, 5.170966605085692, 6.921181010386443, 8.6630308725315, 6.566033465237238, 5.650024498265237, 8.972861110425859, 9.034596909475924, 9.27929899386286, 6.518722366320285, 7.124151805094868, 6.226949971271267, 7.7858874650825305, 6.650535833948739, 6.693316679795091, 8.918107092048682, 9.781480800201113, 7.920701596183792, 5.523439650599788, 8.262874663423052, 7.243058589240401, 9.940152785131566, 8.596907475739934, 9.173930532536044, 8.50643130094106, 7.678095028931959, 9.484091959140628, 9.158085323540046, 6.456629438071645, 5.7851594761004375, 6.8517593439384745, 7.605388362862929, 5.4869004491531435, 6.726896432279302, 7.8745283210599, 5.217873092759256, 9.074743382594146, 8.25558522841639, 6.568250857948819, 6.4916049062758425, 6.763080703939102, 6.626443481025715, 8.742568884793766, 7.505284287356263, 7.63064198649913, 5.743782494854583, 9.57209001208863, 6.627864643361668, 6.63782226194106, 5.344230698489165, 9.897057908758978, 7.398489209046295, 9.564423686421119, 9.638086212487417, 9.848760715891707, 9.078146438657564, 9.627216125956563, 9.61144661825029, 9.006838390830925, 5.6729060802134175, 7.618558611429203, 7.8780200650207455, 9.962487639930789, 8.919742749831263, 8.514581083274777, 8.733245184222193, 6.807888820417384, 9.711567789201084, 8.217504448076145, 7.012873042650083, 7.322857886488043, 9.898774636553663, 7.660641987157691, 5.838987679372441, 5.7417749706702494, 8.436210983288738, 7.8138776545750925]
正規分布 [0.5324375935904874, -0.3530779375782036, -1.3683741456475194, 0.8550825306685746, 0.43469013892015146, 0.14155661457278193, -0.7537828813773354, -0.22263462242443993, 0.6096537715636479, 0.48489767776433806, -0.8248452313401039, -0.9023965058382205, 0.34249730702473463, 0.18409849853991048, 0.8484820527112336, -1.1582125725053838, 0.9214086014444441, 1.7634074969742954, 0.9491413321949335, 0.13112646629094207, 0.9061431298592266, -1.2870797762586406, -0.4434220775745028, 2.0594570576366276, -1.6346161195291298, -1.157718860951095, 0.8228223320168564, -0.6567184327555143, -0.5651032811994183, -1.1194969459729216, 1.682237422911142, -0.6088058499271607, -0.27761469543636275, -1.8130900242341954, 0.7699729664826502, -0.008902331892990233, 0.49864433585385454, 1.5806230586981524, 0.15311291220500362, -1.1919806958263168, -1.0135889886150027, 0.08248995203401366, 1.32075594399839, -1.1988114571728905, -0.24668430582302578, -0.1450480958168968, 0.6574081580897599, -0.8913292640974034, 0.3116957216667728, 0.7838058354177626, -0.037866762244599075, -0.09803420161996611, 0.618793583055987, 0.5814126043641078, 1.2583567956103352, -1.0789656223169575, 1.2304906486400156, -0.22839071358666393, -1.1388952978780043, -0.5532281757233414, -1.2336128003688107, -0.2003717116136265, 1.0340562311015782, -2.2498212769594184, -1.1824327808803452, 0.7682248345284534, -0.30097882883050847, 0.7926079366310617, -1.327513684363958, -0.05272080362551487, -2.606046552863915, -0.8466556917182078, 0.7399065599766491, 1.215481411549136, 1.631408091907619, -0.05608163817060093, -0.8775564670832912, -0.3857148741498997, -1.9181306028911123, 1.3545970556258886, 1.177966182383311, -0.9098131673999311, 1.831576151410436, -1.3528606330079138, 0.5596126918649947, -0.8086752658193437, -1.7382947519171057, 0.3958475718858402, -1.1587062793401812, 1.1936940207218614, -0.8996917306991808, 0.10550901197176209, -0.47897015826125133, 0.1354140612230567, -0.6322787018890805, 0.8204726302534867, 0.6105451410390148, 0.06998263108965841, -0.12692339031175426, 1.9713229451563317]

ヒストグラム

# 01-06. 分布のプロット
import matplotlib.pyplot as plt

plt.hist(r_gauss_list)
plt.title("Gaussian distribution")
<Figure size 640x480 with 1 Axes>

ループからの脱出:break文

for の範囲や条件分岐だけでは扱いにくいループ終了条件に対して break を使う.

# 01-07. ループの中断
for i in range(100):
    print(i)
    if i == 10:
        break
print("ループ終了")
0
1
2
3
4
5
6
7
8
9
10
ループ終了
# 01-08. ネストされたループの中断
for i in range(20):
    for j in range(20):
        print(i, ", ", j)
        if j == 5:
            break
0 ,  0
0 ,  1
0 ,  2
0 ,  3
0 ,  4
0 ,  5
1 ,  0
1 ,  1
1 ,  2
1 ,  3
1 ,  4
1 ,  5
2 ,  0
2 ,  1
2 ,  2
2 ,  3
2 ,  4
2 ,  5
3 ,  0
3 ,  1
3 ,  2
3 ,  3
3 ,  4
3 ,  5
4 ,  0
4 ,  1
4 ,  2
4 ,  3
4 ,  4
4 ,  5
5 ,  0
5 ,  1
5 ,  2
5 ,  3
5 ,  4
5 ,  5
6 ,  0
6 ,  1
6 ,  2
6 ,  3
6 ,  4
6 ,  5
7 ,  0
7 ,  1
7 ,  2
7 ,  3
7 ,  4
7 ,  5
8 ,  0
8 ,  1
8 ,  2
8 ,  3
8 ,  4
8 ,  5
9 ,  0
9 ,  1
9 ,  2
9 ,  3
9 ,  4
9 ,  5
10 ,  0
10 ,  1
10 ,  2
10 ,  3
10 ,  4
10 ,  5
11 ,  0
11 ,  1
11 ,  2
11 ,  3
11 ,  4
11 ,  5
12 ,  0
12 ,  1
12 ,  2
12 ,  3
12 ,  4
12 ,  5
13 ,  0
13 ,  1
13 ,  2
13 ,  3
13 ,  4
13 ,  5
14 ,  0
14 ,  1
14 ,  2
14 ,  3
14 ,  4
14 ,  5
15 ,  0
15 ,  1
15 ,  2
15 ,  3
15 ,  4
15 ,  5
16 ,  0
16 ,  1
16 ,  2
16 ,  3
16 ,  4
16 ,  5
17 ,  0
17 ,  1
17 ,  2
17 ,  3
17 ,  4
17 ,  5
18 ,  0
18 ,  1
18 ,  2
18 ,  3
18 ,  4
18 ,  5
19 ,  0
19 ,  1
19 ,  2
19 ,  3
19 ,  4
19 ,  5