[#42735] [Ruby 1.9-Feature#4147][Open] Array#sample で重みを指定したい — Yoji Ojima <redmine@...>

Feature #4147: Array#sample で重みを指定したい

52 messages 2010/12/10
[#42791] [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい — Shyouhei Urabe <redmine@...> 2010/12/18

チケット #4147 が更新されました。 (by Shyouhei Urabe)

[#42800] Re: [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい — Masaya TARUI <tarui@...> 2010/12/19

> じゃあ反対ないので実装はともかく、この仕様は基本入れる方向で考えましょう。反対の人は意思表示お早めに。

[#42763] [Ruby 1.9-Bug#4159][Open] test_block_variables(TestRipper::ParserEvents) が失敗する — Kouhei Yanagita <redmine@...>

Bug #4159: test_block_variables(TestRipper::ParserEvents) が失敗する

8 messages 2010/12/14

[#42894] [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Shyouhei Urabe <redmine@...>

Feature #4207: これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには

24 messages 2010/12/26
[#42935] Re: [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Kenta Murata <muraken@...> 2011/01/04

むらたです。

[#42936] Re: [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Kenta Murata <muraken@...> 2011/01/05

むらたです。

[ruby-dev:42862] Re: [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい

From: Kenta Murata <muraken@...>
Date: 2010-12-23 05:00:08 UTC
List: ruby-dev #42862
=1B$B$`$i$?$G$9!#=1B(B

yugui =1B$B$5$s$N$*$+$2$G$3$N%9%l$K5$IU$1$^$7$?!#$"$j$,$H$&$4$6$$$^$9!#=1B=
(B

# Math/Random =1B$B$NOC$7$,D9$/$J$C$?$N$G!"0zMQ$rA08e$5$;$^$9!#=1B(B

On 2010/12/19, at 21:15, Yugui wrote:

> 2010/12/19 Masaya TARUI <tarui@prx.jp>:
>>> =
=1B$B$8$c$"H?BP$J$$$N$G<BAu$O$H$b$+$/!"$3$N;EMM$O4pK\F~$l$kJ}8~$G9M$($^$7$=
g$&!#H?BP$N?M$O0U;WI=3D<($*Aa$a$K!#=1B(B
>> =
=1B$B;EMM$,5M$a$i$l$F$$$J$$$H;W$&$N$G!"$=3D$&$$$&0UL#$G>C6KE*H?BP$G$9!#=1B=
(B
>=20
> =1B$BF10U8+$G$9!#;EMM$r$b$C$H$h$/9M$($k$Y$-$G$9!#=1B(B
>=20
> =
=1B$B%K!<%:$K$D$$$F$Opw$1$k$N$G!"2?$i$+$N7A$GJ,I[4X?t$rM?$($k$3$H$K$O0[O@$=
O$"$j$^$;$s!#=1B(B
> =1B$B$3$3$G!"4v$D$+$N9MN8$9$Y$-$3$H$,$"$j$^$9!#=1B(B
> * =1B$B8zN(E*$J<BAu$N2DG=3D$J;EMM$G$"$k$Y$-$G$9!#=1B(B
> * [ruby-dev:41918] =
=1B$BHsI|85Cj=3DP$NMWK>$,F~$k$H$9$l$P!"$=3D$NMWK>$H>WFM$;$:!"@09g@-$r;}$D;=
EMM$G$"$kI,MW$,$"$j$^$9!#=1B(B

=1B$BI|85Cj=3DP$,2DG=3D$J$h$&$K$9$kJ}K!$H$7$F=1B(B replace =
=1B$B%-!<%o!<%I$,J,$+$j$K$/$$$H$$$&=1B(B
=1B$B0U8+$,=3DP$F$$$?$N$G!"@.@%$5$s$,Ds0F$7$F$$$k$h$&$K=1B(B choice =
=1B$B%a%=3D%C%I$H$7$F=1B(B
=1B$BDs6!$9$kJ}K!$,NI$$$N$G$O$J$$$+$H!#=1B(B


>  * mrkn=1B$B$5$s$N9M$($k=1B(BArray#sample=1B$B$N;EMM$bJ9$-$?$$$G$9=1B(B

=1B$BCj=3DP?t$,>.$5$$$J$i$P!"8e=3DR$9$k3NN(>pJs8;%/%i%9$rMQ$$$F$b!"=1B(B
Ojima =1B$B$5$s$,M_$7$,$C$F$$$k=1B(B Array#sample =1B$B$rMQ$$$F$b!"=1B(B
=1B$B7W;;%3%9%H$O$=3D$s$J$KJQ$o$i$J$$$G$7$g$&!#=1B(B
=1B$B$G$9$+$i!";d$OF3F~$9$k$3$H$KH?BP$G$O$"$j$^$;$s!#=1B(B
=1B$B$=3D$NBe$o$j%$%s%?!<%U%'%$%9$G0J2<$NDs0F$,$"$j$^$9!#=1B(B

Ojima =1B$B$5$s$,M_$7$,$C$F$k!V=1B(Bn=1B$BI8K\$@$1$N=3DE$_IU$-Cj=3DP!W$r=1B=
(B Array#sample =1B$B$GBP1~$9$k$J$i!"=1B(B
=1B$B<!$N$h$&$K$9$k$HNI$$$N$G$O$J$$$G$7$g$&$+!#=1B(B

- Array#sample =1B$B$G$O=3DE$_$rG[Ns$+%O%C%7%e$G<u$1<h$k!#=1B(B
- Array#sample_by =
=1B$B$rMQ0U$7!"8eCV%V%m%C%/7PM3$G=3DE$_$rM?$($i$l$k$h$&$K$9$k!#=1B(B

=1B$B8e<T$O!"=1B(Bsort_by =1B$B$J$I$H$NBP1~$G!"=1B(BArray#sample =
=1B$B$,8eCV%V%m%C%/$r<u$1IU$1$k$h$j=1B(B
=1B$BJ,$+$j$d$9$$$H;W$C$F$$$^$9!#=1B(B

=
=1B$BEDCf$5$s$,HsI|85Cj=3DPMQ$N8zN(NI$$%"%k%4%j%:%`$rC5$7$F$/$l$F$$$k$N$G!=
"=1B(B
=1B$BJ#?t8D$NCj=3DP$r<BAu$7$FNI$$$H;W$$$^$9!#Cj=3DP8e$N=3DE$_$O=1B(B 0 =
=1B$B$H$9$k;v$,=1B(B
=1B$B:G$b0lHLE*$J$N$G$O$J$$$+$H;W$$$^$9!#=1B(B

n =1B$B$,$"$kDxEYBg$-$$>l9g$O=1B(B Walker =
=1B$B$N%"%k%4%j%:%`$r:NMQ$7$?$[$&$,8zN($,NI$$$O$:$G$9!#=1B(B
=
=1B$B%"%k%4%j%:%`$r@Z$jBX$($k$?$a$NogCM$ND4::$J$I$,I,MW$K$J$k$G$7$g$&$M!#=1B=
(B
Walker =1B$B$N%"%k%4%j%:%`$O@N=1B(B boost =
=1B$BMQ$K:n$C$?$3$H$,$"$j$^$9!#=1B(B
=1B$B$=3D$l$O=1B(B CodeRepos =1B$B$N=1B(B http://bit.ly/eAk1M1 =
=1B$B$3$3$KCV$$$F$"$k$N$G$9$,!"=1B(B
=1B$BI,MW$J$i;d$,<BAu$7$F$b9=3D$$$^$;$s!#=1B(B

=1B$B$"$H$O!"Nc$($P=1B(B
- =1B$B=3DE$_$,;vA0$K5,3J2=3D$5$l$F$$$k;v$rEA$($kJ}K!=1B(B
- =1B$B=3DE$_$,N_@QCM$K$J$C$F$$$k;v$rEA$($kJ}K!=1B(B
- =1B$B=3DE$_$,%=3D!<%H$5$l$F$$$k;v$rEA$($kJ}K!=1B(B
=
=1B$B$J$I$,$"$l$P!"$=3D$l$>$l$N>l9g$KE,$7$?%"%k%4%j%:%`$r@Z$jBX$($i$l$k$s$=
G$7$g$&$1$I!"=1B(B
=1B$B8e=3DR$9$k$h$&$K=1B(B Array#sample =
=1B$B$NLr3d$H$7$F$O2Y$,=3DE$9$.$k5$$,$9$k$N$G!"=1B(B
=1B$B;d$O$3$3$^$GJ#;($K$7$J$/$FNI$@$m$&$H9M$($F$$$^$9!#=1B(B



=1B$B0J2<=1B(B Random =1B$B$K$D$$$F!#=1B(B

> * =
mrkn=1B$B$5$s$N=1B(BMath/Random=1B$B9=3DA[$r9MN8$7$FM_$7$$$G$9!#$"$A$i$GDs=
6!$5$l$kJ,I[<BAu$H@09g@-$r;}$D;EMM$G$"$C$FM_$7$$$G$9!#=1B(B

=1B$B;d$,:n$C$F$$$k=1B(B Math/Random =1B$B$O!"=1B(B
- =1B$B0lMMMp?t@8@.4o=1B(B
- =1B$B0lMMMp?t@8@.4o$r<u$1<h$C$FMp?t$r0l$D@8@.$9$kJ,I[4X?t=1B(B
=1B$B$NFs<oN`$G9=3D@.$5$l$^$9!#=1B(B
=1B$B;EMM$O4pK\E*$K=1B(B boost =1B$B$N=1B(B random =
=1B$B%i%$%V%i%j$K=3D,$C$F$$$^$9!#=1B(B

=1B$B;H$$J}$NNc=1B(B:

  gen =3D Math::Random::SFMT216091.new  # Random.new =1B$B$KAjEv=1B(B
  gen.()  # =1B$B@8@.4o$,D>@\%5%]!<%H$9$k7?$HHO0O$NMp?t$r@8@.=1B(B
  gen.int(min, max)  # [min, max] =1B$B$N0lMMJ,I[@0?tMp?t$r@8@.$9$k=1B(B
  gen.real  # [0, 1) =1B$B$N0lMMJ,I[Mp?t$rG\@:EY=1B(B (53-bit) =
=1B$B$G@8@.=1B(B

  ndist =3D Math::Random::NormalDistribution.new(0, 1)  # =
=1B$BI8=3D`@55,J,I[=1B(B
  ndist.(gen)  # =1B$BI8=3D`@55,J,I[$K=3D>$&Mp?t$r@8@.=1B(B

=1B$B$3$&$$$&;H$$J}$J$N$G!"$=3D$N$^$^AH$_9~$_=1B(B Random =
=1B$B%/%i%9$NBe$o$j$K$G$-$k$h$&$K=1B(B
=1B$B:#$O$J$C$F$J$$$G$9!#=1B(B

# =
=1B$B$3$3$GF0$/%3!<%I$r8+$;$i$l$?$i%+%C%3NI$+$C$?$s$G$9$,!";DG0$J$,$i:#$O%=
3%s%Q%$%k$G$-$^$;$s!#=1B(B
# =1B$B0JA0=1B(B TypedData =
=1B$B$KBP1~$5$;$h$&$H$7$F?'!9$HO.$C$?$"$2$/$K=1B(B TypedData =
=1B$B$,;H$($J$$;v$r8g$j!"=1B(B
# =1B$B$=3D$N$^$^$7$P$i$/$N$"$$$@J|CV$7$F$7$^$C$F$$$k>u67$G$9!#=1B(B

=1B$BEvA3$N$h$&$K=1B(B Walker =
=1B$B$N%"%k%4%j%:%`$K$h$kN%;6J,I[$b<BAu$7$F$$$k$s$G$9$,!"=1B(B
=1B$B$3$l$r=1B(B Array#sample =1B$B$G;H$&$?$a$K$O=1B(B Array#sample =
=1B$B$,!V8F$S=3DP$7$?$iE:;z$rJV$9%b%N!W$r=1B(B
=1B$BMp?t@8@.4o$NBe$o$j$K<u$1<h$C$F;H$($k$h$&$K$J$kI,MW$,$"$j$^$9!#=1B(B

=1B$B0JA0I|85Cj=3DP$rDs0F$7$?$H$-$O=1B(B Walker =
=1B$B$N%"%k%4%j%:%`$r<BAu$7$F=1B(B
=1B$B=3DE$_IU$-Cj=3DP$NDI2C5!G=3D$rDs0F$7$h$&$H9M$($F$$$^$7$?!#=1B(B
=1B$B$7$+$7!":#$G$O=1B(B Array#sample =
=1B$B$O$3$l0J>eJ#;($K$G$-$J$$$@$m$&$J$H9M$($k$K=1B(B
=1B$B;j$C$F$$$^$9!#F~$l$?$H$7$F$bI|85Cj=3DP$/$i$$$@$m$&$H=1B(B :P

=1B$B>e$N$h$&$K9M$($k$K;j$C$?M}M3$O<!$N$H$*$j$G$9!#=1B(B

=
=1B$BF10l>r7o$G$NO"B3$7$?Cj=3DP$r9bB.$K<B8=3D$9$k$K$O!"1sF#$5$s$,;XE&$5$l$=
F$$$k$h$&$K!"=1B(B
=1B$BJl=3D8CD$r%=3D!<%H$7$?$j=1B(B Walker =
=1B$B$N%"%k%4%j%:%`$N$h$&$K:n6HMQ%G!<%?$r=3D`Hw$7$?$j$9$k=1B(B
=
=1B$BI,MW$,$"$j$^$9!#=3D`Hw$N$?$a$N7W;;%3%9%H$r9M$($k$H!"$=3D$N$h$&$J=3D`H=
w:Q$_$N>uBV$r=1B(B
=1B$B%*%V%8%'%/%H$K$7$F<h$j=3DP$7$F;H$$2s$;$k;EAH$_$,M_$7$/$J$j$^$9!#=1B(B=

=1B$B$=3D$7$F!"$=3D$N=3D`Hw:Q$_$N>uBV$OJl=3D8CD$+$i@Z$jN%$;$J$$$b$N$G$9$+$=
i!"=1B(B
=1B$B7k6I$N$H$3$m!VCj=3DP4o!W$H$7$FJl=3D8CD$H$J$kG[Ns$J$j%O%C%7%e$J$j$r4^$=
`=1B(B
=1B$B%*%V%8%'%/%H$,I,MW$K$J$k$H$$$&$3$H$G$9$M!#=1B(B

Array#sample =1B$B$O!"$=3D$N$h$&$J=3D`Hw$r1#$7$F$7$^$&%a%=3D%C%I$G$9!#=1B(=
B
=
=1B$B$G$9$+$i!"J#?t2s$N8F$S=3DP$7$GJ#?t8D$NCj=3DP$r9bB.$K9T$J$&MQES$K$O8~$=
$$F$^$;$s!#=1B(B
=1B$BF1MM$K=1B(B GNU R =1B$B$N=1B(B sample =
=1B$B4X?t$bJ#?t2s$N8F$S=3DP$7$K$O:GE,2=3D$G$-$F$J$$$G$9!#=1B(B
=1B$B1sF#$5$s$,=1B(B [ruby-dev:42817] =1B$B$G8@5Z$7$F$k;v$r=1B(B =
Array#sample =1B$B$K5a$a$k$N$OF@:v$8$c$J$$$G$9!#=1B(B

=1B$B9bB.$JL5:n0YCj=3DP$,I,MW$J$i!"=1B(BArray =1B$B$d=1B(B Hash =
=1B$B$N%a%=3D%C%I$H$7$F$G$O$J$/!"=1B(B
=1B$B3NN(>pJs8;%/%i%9$H$7$FCj=3DP4o$r<BAu$9$kI,MW$,$"$j$^$9!#=1B(B
=1B$B$@$+$i!"!V=1B(BArray#sample =
=1B$B$OCY$$$b$N$@!W$H$$$&$*KOIU$-$,$"$k$J$i!"=1B(B
=
=1B$B:GDc8B$@$1$G$-$k$h$&$K$7$F!VCY$$$N$,7y$J$i<+J,$G<BAu$7$F$M!W$GNI$$$H;=
W$$$^$9!#=1B(B

=1B$B$H!"$3$3$^$G=3Dq$$$F$$$F5$IU$-$^$7$?$,!"=1B(B[ruby-dev:42829] =
=1B$B$G8@5Z$5$l$F$$$k=1B(B
=1B$B@.@%$5$s$N=1B(B sample_each =
=1B$B$O>e$G=3Dq$$$?!VCj=3DP4o!W$r@8@.$9$k%a%=3D%C%I$K$J$C$F$k$s$G$9$M!#=1B=
(B
=1B$B$3$N%"%$%G%"$O$H$F$bAG@2$7$$$H;W$$$^$9!#=1B(B


--
Kenta Murata
OpenPGP FP =3D 1D69 ADDE 081C 9CC2 2E54  98C1 CEFE 8AFB 6081 B062

=1B$BK\$r=3Dq$-$^$7$?=1B(B!!
=1B$B!X=1B(BRuby =1B$B5U0z$-%l%7%T!Y=1B(B =
http://www.amazon.co.jp/dp/4798119881/mrkn-22

E-mail: mrkn@mrkn.jp
twitter: http://twitter.com/mrkn/
blog: http://d.hatena.ne.jp/mrkn/


In This Thread