4月24日の演習問題 v. と vi. のリストをタプルに置き換えたプログラムを作成しましょう.
2桁の正の整数をランダムに20個ずつ2回発生させ,両者に共通する数値を表示するプログラムを作成しましょう.
[21, 24, 84, 67, 67, 50, 62, 32, 33, 96, 76, 25, 19, 71, 25, 82, 28, 49, 47, 33] [51, 69, 52, 39, 85, 79, 30, 34, 71, 98, 43, 66, 49, 34, 91, 27, 94, 32, 82, 88] {32, 49, 82, 71} |
解答例
10, 100, 1000, 10000, 100000, 1000000のどれかの整数を乱数を用いて発生させ,1 からその数までの整数を乱数によりその数分発生させることを考えます.どのくらいの頻度で乱数の重複が起こるのかを調べるプログラムを作成しましょう.
Total numbers: 1000000 Elements of set: 632093 Overlapped frequency: 36.8 % |
リストを集合にすると,要素が何個重複していたかがわかります.解答例 1
リストを使用してサイコロのそれぞれの目の頻度を調べるプログラムを作成しましたが,今回は辞書を使用して行ってみましょう.リストでは先頭のインデックスが 0 となってしまいますが,辞書ではサイコロの目の通りに 1 から 6 までのキーでできます.
5 4 3 2 1 3 3 5 3 1 2 5 6 1 4 6 2 4 4 1 1 2 6 5 1 2 2 3 3 6 1 6 6 4 1 2 1 6 3 1 5 5 6 1 5 1 4 5 1 4 5 3 5 2 1 6 3 3 6 4 4 3 5 3 2 5 4 4 2 6 3 1 2 1 4 2 2 5 3 6 3 6 3 4 2 1 3 6 6 2 5 4 3 3 5 2 2 6 6 6
1 2 3 4 5 6 17 17 19 14 15 18 |
教科書の p.228 の List 8-15 を参考にして,頻度の出力では教科書 p.227 の List 8-12 にある keys() と values() 関数を使用しています.
1から100の範囲の整数を乱数を用いて100個発生させ,小さい順に表示させます.次に,先ほど乱数で出なかった整数を表示するプログラムを作成しましょう.
Random numbers: 1 2 2 4 5 6 7 7 7 8 9 9 10 11 12 14 15 15 17 18 18 22 23 23 23 24 25 27 29 29 29 30 32 32 32 34 34 36 36 39 39 40 40 41 42 43 43 46 47 49 49 56 56 58 58 58 59 61 62 62 63 64 65 65 67 67 72 72 73 74 75 75 76 77 77 78 79 80 80 83 84 84 85 85 86 87 87 87 88 88 94 95 97 98 99 99 99 100 100 100 Numbers not appeared above: 3 13 16 19 20 21 26 28 31 33 35 37 38 44 45 48 50 51 52 53 54 55 57 60 66 68 69 70 71 81 82 89 90 91 92 93 96 |
教科書の p.233 にある pop メソッドは無作為に選ばれた要素を削除とされていますが,実際にどのように要素が削除されるのか,確認してみましょう.とりあえず要素が10個の集合を作成し,pop メソッドを9回実施してどのように要素が消されているのか,確認してみてください.