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

回答編集履歴

2

別解

2015/09/04 13:10

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -24,4 +24,10 @@
24
24
  ---
25
25
 
26
26
  追記
27
- 自分でコードを書いてみたら,どうやらジェネリクスを持つ要素の配列は作れないようなので,ジェネリクスを使わず型を固定して使ったほうが良さそうです.
27
+ 自分でコードを書いてみたら,どうやらジェネリクスを持つ要素の配列は作れないようなので,ジェネリクスを使わず型を固定して使ったほうが良さそうです.
28
+ ---
29
+
30
+ 追記2
31
+ もっと別の方法では,**重みのある要素の数を増やしてしまう**という方法が考えられます.
32
+ 重みを付ける要素が決まったあと,Listにその要素を増えた重み分追加します.
33
+ そしてシャッフルしたあと,重複する要素の内最初に出てくるもの以外を取り除く必要があります.

1

ジェネリクス持ちは配列にできないらしい

2015/09/04 13:10

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -19,4 +19,9 @@
19
19
  0. 配列の先頭から順に要素の重みを取り出し,重みの合計を出す
20
20
  0. 乱数<重みの合計となった時点の要素と先頭を入れ替える
21
21
  0. 1. の重みの合計から4. で選ばれた要素の重みを引き,2. に戻る.ただし,3. で取り出すのはすでに選んだ個数分先の要素から(2周目であれば2番目,インデックス番号1から)
22
- こうなると思います.
22
+ こうなると思います.
23
+
24
+ ---
25
+
26
+ 追記
27
+ 自分でコードを書いてみたら,どうやらジェネリクスを持つ要素の配列は作れないようなので,ジェネリクスを使わず型を固定して使ったほうが良さそうです.