Skip to article frontmatterSkip to article content

06-01 疑似乱数

疑似乱数

01-01. 擬似乱数列の生成

# 01-01. 擬似乱数列の生成
import random
for i in range(100):
    r = random.randrange(1, 1001)
    print(r)
932
338
854
818
265
942
653
170
606
651
744
923
540
978
991
160
482
530
940
804
764
271
571
443
75
459
537
96
249
762
696
584
241
409
425
708
887
994
197
805
673
469
725
88
714
360
994
409
735
304
247
302
647
922
184
291
312
450
432
367
807
430
65
352
854
503
966
135
758
115
220
586
555
6
49
547
497
77
348
530
621
415
66
411
608
425
591
153
863
989
353
293
879
450
756
772
910
37
246
698

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")
<Figure size 640x480 with 1 Axes>

ループからの脱出: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