06-01 疑似乱数
疑似乱数¶
01-01. 擬似乱数列の生成¶
# 01-01. 擬似乱数列の生成
import random
for i in range(100):
r = random.randrange(1, 1001)
print(r)
591
272
189
345
969
437
578
308
497
477
418
828
217
612
552
339
645
188
127
497
385
623
337
806
850
165
365
341
406
86
371
984
404
589
861
538
574
127
785
888
190
654
61
364
750
514
930
852
309
813
47
379
487
961
119
350
484
327
131
5
408
113
901
795
301
154
756
606
462
439
230
989
77
813
972
33
205
279
920
802
384
631
146
992
898
950
394
835
80
6
717
15
602
506
551
131
390
506
408
951
01-02. シード¶
# 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. シーケンス操作¶
# 01-03. シーケンス操作
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)
# 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
# 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.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¶
# 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)
# 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]
# シャッフル
print("# random.sample シャッフル")
for i in range(30):
r = random.sample(a_list, k=len(a_list))
print(r)
# 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. 連続確率分布¶
# 01-05. 連続確率分布
# 一様分布
# random
r_list_uniform_1 = []
for i in range(100):
r = random.random()
r_list_uniform_1.append(r)
print("一様分布(0~1)", r_list_uniform_1)
一様分布(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]
# uniform
r_list_uniform_2 = []
for i in range(100):
r = random.uniform(5, 10)
r_list_uniform_2.append(r)
print("一様分布(5~10)", r_list_uniform_2)
一様分布(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]
# 正規分布
r_list_Gauss = []
for i in range(100):
r = random.gauss(0, 1)
r_list_Gauss.append(r)
print("正規分布", r_list_Gauss)
正規分布 [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. 分布のプロット¶
# 01-06. 分布のプロット
import matplotlib.pyplot as plt
plt.hist(r_list_Gauss)
plt.title("Gaussian distribution")

ループからの脱出:break文¶
01-07. ループの中断¶
# 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. ネストされたループの中断¶
# 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