質問するログイン新規登録

回答編集履歴

1

コード修正

2021/12/01 08:28

投稿

8524ba23
8524ba23

スコア38350

answer CHANGED
@@ -8,6 +8,7 @@
8
8
  random.seed(110)
9
9
  orbit = [random.uniform(0,1) for _ in range(10000000)]
10
10
  print('start')
11
+ #print(orbit)
11
12
 
12
13
  N = 100
13
14
 
@@ -21,13 +22,15 @@
21
22
  slots[n] = []
22
23
  slots[n].append(i) # 要素位置を保持
23
24
 
24
- # 各クラスの計算
25
+ # 各クラスの計算
25
26
  results = [0.0 for _ in range(N)] # 要素のないクラスの初期値は0
26
27
  for n, lst in slots.items():
27
28
  exists = set()
28
29
  SUB_N = len(lst) # クラス内の要素数
30
+ st = n / N # この区間の左端値
29
31
  for i in lst:
32
+ v = (orbit[i]-st) * N # クラス内の値を0...1に正規化
30
- sub_n = math.floor(orbit[i]*SUB_N)
33
+ sub_n = math.floor(v*SUB_N)
31
34
  if sub_n >= SUB_N:
32
35
  sub_n = SUB_N-1
33
36
  exists.add(sub_n)