回答編集履歴

5

code

2022/01/17 10:11

投稿

jckkvs
jckkvs

スコア152

test CHANGED
@@ -1,9 +1,10 @@
1
- 3連続奇数or偶数が続いた場合は別のグループから選択するので問題ないと思い
1
+ 3連続奇数or偶数が続いた場合は別のグループから選択するプログラムを実装しした
2
+ 配列数、奇数、偶数それぞれの最大連続数を設定できる形です。
3
+ 条件に沿う形で出来る限りランダム性を担保していると思います。
2
4
 
3
- 奇数それぞれの最大連続数を設定できる形コード記載しました
5
+ 条件に合う列が生成できないケースは、一から再計算しま
4
6
 
5
- 尚、条件に合う数列が生成できなくなった場合は、再度トライさせています。
6
- また、その失敗した確率も計算させていが、
7
+ また、その失敗する確率も計算させましたが、
7
8
  n=100, max_odd_sequense=3, max_even_sequense=3の条件では、11%程度でした。
8
9
 
9
10
 

4

コード

2022/01/17 07:02

投稿

jckkvs
jckkvs

スコア152

test CHANGED
@@ -21,7 +21,6 @@
21
21
  is_odd = [True if i%2 !=0 else False for i in before_odd_array]
22
22
  is_even =[True if i%2 ==0 else False for i in before_even_array]
23
23
 
24
-
25
24
  if sum(is_odd) >= max_odd_sequense:
26
25
  even_list = [i for i in choice_list if i%2 == 0]
27
26
  if len(even_list) == 0:
@@ -29,9 +28,7 @@
29
28
  return make_conditional_sequence(n, max_odd_sequense, max_even_sequense, failed=failed+1)
30
29
  else:
31
30
  choiced = random.choice(even_list)
32
- choice_list.remove(choiced)
33
31
  #print('random choiced from even', choiced)
34
- random_array.append(choiced)
35
32
 
36
33
 
37
34
  elif sum(is_even) >= max_even_sequense:
@@ -40,13 +37,12 @@
40
37
  return make_conditional_sequence(n, max_odd_sequense, max_even_sequense, failed=failed+1)
41
38
  else:
42
39
  choiced = random.choice(odd_list)
43
- choice_list.remove(choiced)
44
- random_array.append(choiced)
45
40
 
46
41
  else:
47
42
  choiced = random.choice(choice_list)
43
+
48
- choice_list.remove(choiced)
44
+ choice_list.remove(choiced)
49
- random_array.append(choiced)
45
+ random_array.append(choiced)
50
46
 
51
47
  #print(f'failed {failed}')
52
48
 

3

コード名修正

2022/01/17 06:07

投稿

jckkvs
jckkvs

スコア152

test CHANGED
@@ -11,7 +11,7 @@
11
11
  import random
12
12
  import numpy as np
13
13
 
14
- def make_conditional_sequence(n=5, max_odd_sequense=2, max_even_sequense=2, failed=0):
14
+ def make_conditional_sequence(n=100, max_odd_sequense=3, max_even_sequense=3, failed=0):
15
15
  choice_list = list(range(n))
16
16
  random_array = []
17
17
  #print('Start')

2

修正

2022/01/17 04:11

投稿

jckkvs
jckkvs

スコア152

test CHANGED
@@ -11,7 +11,7 @@
11
11
  import random
12
12
  import numpy as np
13
13
 
14
- def make_random(n=5, max_odd_sequense=2, max_even_sequense=2, failed=0):
14
+ def make_conditional_sequence(n=5, max_odd_sequense=2, max_even_sequense=2, failed=0):
15
15
  choice_list = list(range(n))
16
16
  random_array = []
17
17
  #print('Start')
@@ -26,7 +26,7 @@
26
26
  even_list = [i for i in choice_list if i%2 == 0]
27
27
  if len(even_list) == 0:
28
28
  #print('this trial failed')
29
- return make_random(n, max_odd_sequense, max_even_sequense, failed=failed+1)
29
+ return make_conditional_sequence(n, max_odd_sequense, max_even_sequense, failed=failed+1)
30
30
  else:
31
31
  choiced = random.choice(even_list)
32
32
  choice_list.remove(choiced)
@@ -37,7 +37,7 @@
37
37
  elif sum(is_even) >= max_even_sequense:
38
38
  odd_list = [i for i in choice_list if i%2 != 0]
39
39
  if len(odd_list) == 0:
40
- return make_random(n, max_odd_sequense, max_even_sequense, failed=failed+1)
40
+ return make_conditional_sequence(n, max_odd_sequense, max_even_sequense, failed=failed+1)
41
41
  else:
42
42
  choiced = random.choice(odd_list)
43
43
  choice_list.remove(choiced)
@@ -54,7 +54,7 @@
54
54
 
55
55
  failed_list = []
56
56
  for i in range(100):
57
- random_ , failed = make_random(n=100, max_odd_sequense=3, max_even_sequense=3)
57
+ random_ , failed = make_conditional_sequence(n=100, max_odd_sequense=3, max_even_sequense=3)
58
58
  #print(random_)
59
59
  failed_list.append(failed)
60
60
 

1

2022/01/17 03:37

投稿

jckkvs
jckkvs

スコア152

test CHANGED
@@ -1,6 +1,11 @@
1
+ 3連続奇数or偶数が続いた場合は別のグループから選択するので問題ないと思います。
2
+
3
+ 奇数、偶数それぞれの最大連続数を設定できる形でコード記載しました。
4
+
1
- 条件に合わない数列なった場合は、再度トライさせています。
5
+ 尚、条件に合数列が生成できくなった場合は、再度トライさせています。
2
- また、失敗した確率も計算させていますが、
6
+ また、その失敗した確率も計算させていますが、
3
7
  n=100, max_odd_sequense=3, max_even_sequense=3の条件では、11%程度でした。
8
+
4
9
 
5
10
  ```python
6
11
  import random