01 擬似乱数
擬似乱数¶
# 01-01. 擬似乱数列の生成
import random
for i in range(100):
r = random.randrange(1, 1001)
print(r)162
680
803
445
677
372
413
313
859
24
503
855
870
177
698
16
935
291
679
327
939
645
111
220
139
14
388
806
376
546
445
938
616
695
683
113
619
885
786
49
855
23
650
175
241
841
529
194
460
430
699
756
843
427
893
356
486
450
830
933
721
129
766
693
335
991
528
163
469
517
713
320
270
886
230
946
361
739
945
639
585
25
280
197
570
478
722
729
158
611
198
880
337
913
298
190
108
122
65
100
シード¶
同じシード (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")
ループからの脱出: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:
break0 , 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