Ruby 初心者スレッド Part 65

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f80-JI52)
垢版 |
2018/12/22(土) 04:43:34.03ID:84E3pYZa0
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 64
https://mevius.5ch.net/test/read.cgi/tech/1535797516/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/06/08(土) 02:34:37.85ID:0P3wY/7I0
>>428
自己レス

配列に含まれている重複している数を数えるには?
https://teratail.com/questions/91229

l.each_with_object( Hash.new( 0 ) ){ |e, h| h[ e ] += 1 }

Python の、こういうのは無さそう。
c = collections.Counter( l )
2019/06/08(土) 03:19:18.26ID:s7niJl7f0
["a", "b", "c", "b"].tally
#=> {"a"=>1, "b"=>2, "c"=>1}
2019/06/08(土) 03:54:40.62ID:Vf2EEML20
>>425
csvを全部読み込んで処理しようとするとそうなるのは避けられない、何らかの工夫をするしかない
一行、数行ずつ処理し、終わるごとに配列、hashをクリアしていけばいいが、出来ない場合ね

csvを二回読み、一回目で必要なキーや情報だけ集めて一度csvをclose、
2回目にその情報を使って一行ずつ処理するなど
2019/06/08(土) 05:57:15.56ID:2hi7btAr0
>>425
MapReduceみたいに複数のマシンに分散させるとか
433デフォルトの名無しさん (ワッチョイ 6b2c-MqbY)
垢版 |
2019/06/09(日) 05:48:42.16ID:rn4C+nSw0
[[1, 2], [3, 4]] の外側の[ ] を外すには、どうすれば良いですか?
[1, 2], [3, 4] のようにしたい

flatten では、内側の[ ]が無くなる

ary = [[1, 2], [3, 4]]

p ary.flatten( 1 )
#=> [1, 2, 3, 4]
2019/06/09(日) 05:57:04.68ID:Zvq68IITM
>>433
あちこちでアホみたいなレスしてRubyの評判を落とすのをやめたら教えてあげるよ
2019/06/09(日) 13:07:01.08ID:owsNLjD/0
>>433
ary[0] or ary.first
2019/06/09(日) 13:42:07.09ID:Y6d7d5Fn0
>>433
意味がわからん。
437デフォルトの名無しさん (ワッチョイ eb7c-yvwO)
垢版 |
2019/06/09(日) 14:03:11.38ID:V8qyq4Ge0
*[[1, 2], [3, 4]]
438デフォルトの名無しさん (スプッッ Sddb-Gzfa)
垢版 |
2019/06/09(日) 14:33:40.10ID:FDYkpc7vd
オススメな本ある?
2019/06/09(日) 14:58:26.11ID:VJkUGCEU0
>>438
アマゾン/dp/B00ICKLC2A
440デフォルトの名無しさん (スプッッ Sddb-Gzfa)
垢版 |
2019/06/09(日) 20:52:05.62ID:FDYkpc7vd
>>439
Rubyで作る奇妙なプログラミング言語-〜ヘンな言語のつくりかた〜
これ?
2019/06/09(日) 21:04:35.15ID:VJkUGCEU0
>>440
そうです、結構おもしろかったですよ
442デフォルトの名無しさん (スプッッ Sddb-Gzfa)
垢版 |
2019/06/09(日) 21:45:31.88ID:FDYkpc7vd
>>441
Kindleバージョンしかないの?
2019/06/09(日) 21:51:40.23ID:VJkUGCEU0
>>442
書籍で出ていましたよ、私が持っているのは書籍の方
444デフォルトの名無しさん (ワッチョイ ebb6-fbqF)
垢版 |
2019/06/09(日) 21:55:27.58ID:W83DJxDE0
【実体験】ブログを1,000記事ほど書いたら、月300万くらい稼げた話
https://www.youtube.com/watch?v=GmVulh282ps&;t=604s
【報告】ブログで「月収1,000万」を達成できました【方法を解説する】
https://www.youtube.com/watch?v=pgjcuLp8wt0
年間ほど努力したら「年収3,000万」になったので、経験談を語る
https://www.youtube.com/watch?v=oV_SY-a1lMs
期間工ブログの収入は1500万円でした。【フリーランスの現実&底辺からの復活編】
https://www.youtube.com/watch?v=aijLjFLOuC4
年商1300万のプロブロガーの初心者時代から今までの軌跡
https://www.youtube.com/watch?v=UMiF4T2EO9o
【収益報告】実働月10hでも大金稼ぐ方法を解説【年収6,000万】
https://www.youtube.com/watch?v=o2ISWP-VZsw&;t=288s
無料ブログは稼げない。稼ぐならオススメはWordPress一択の理由
https://www.youtube.com/watch?v=o8oUe3JS-lg
445デフォルトの名無しさん (ワッチョイ 115f-Gzfa)
垢版 |
2019/06/09(日) 22:06:11.67ID:+p5uJAry0
>>443
2008年発売の書籍!
2019/06/09(日) 22:58:24.18ID:rn4C+nSw0
おすすめ本は、このスレの最初の方に、まとめてある!
2019/06/09(日) 23:32:37.79ID:+p5uJAry0
おお!ありがと!
448デフォルトの名無しさん (ワッチョイ 5b33-2qry)
垢版 |
2019/06/13(木) 15:09:32.77ID:mYw2PK9v0
標準ライブラリに仮想環境を構築するモジュールがあれば教えてください
2019/06/14(金) 00:20:43.41ID:gXbRy3uY0
まさか、標準ライブラリには無いだろ

Chef, Vagrant とかだろ
2019/06/14(金) 11:13:41.68ID:d7JGEW920
物議を醸すパイプライン演算子
2019/06/14(金) 12:11:55.47ID:/GXcsjP70
sh「パイプライン演算子とはようやくシェルスクリプトに追いついてきたか?」
452デフォルトの名無しさん (ワッチョイ 5b33-2qry)
垢版 |
2019/06/14(金) 17:43:29.05ID:2ICDzfK10
>>449
Pythonのvenvみたいなのはないんですか?
2019/06/14(金) 21:43:43.43ID:gXbRy3uY0
rbenv, nodenv などのanyenv だろ。
ただし、anyenv は、シェルスクリプトで書かれているらしいから、Linux/Mac でしか使えない

Windows では、仮想OS を使うか、
Windows10・WSL 上のLinux で動かしている、記事もある

Windows の場合、ユーザー環境変数PATH を手動で切り替える方法もある。
PowerShell(PS) で、そういうスクリプトを書くとか

ruby.exe のある場所。
C:\Ruby24-x64\bin
C:\Ruby25-x64\bin

PS で、環境変数PATHは、; で区切り。
$env:Path.split(";")

#=> C:\Ruby24-x64\bin
2019/06/14(金) 21:51:30.95ID:gXbRy3uY0
|> は、関数型言語、Elixir のパイプ演算子

メソッドチェーンを発展させて、オブジェクト指向から、関数型へ近づく。
マルチコアCPU の時代への適用
2019/06/14(金) 22:31:52.50ID:Guh3Kqz10
パイプ演算子ってドットのエイリアスなの
それパイプ演算子じゃない
2019/06/14(金) 22:59:33.98ID:cwcbHRc8a
Rubyは第一級関数じゃないからパイプ演算子とは極めて相性が悪い
Rubyで a |> b と書いたら、(このRubyキチガイを除く)まともな頭で普通に類推したら b()(a()) の意味になっちゃうからね
括弧省略が鬼門
2019/06/15(土) 00:21:14.51ID:ZZVwfMZi0
こういうの見ると型は必要だよなあと感じる
2019/06/15(土) 02:09:14.95ID:aR6/lbk80
ふうむ
では b <| a ならどうだろう
2019/06/15(土) 08:12:23.99ID:ZCtqwPNW0
>>453
やっぱりWindows版のruby.exeを使うのはやめたほうが良いっすね
2019/06/15(土) 18:03:41.92ID:VjZxllkS0
カッコ省略の問題がなんで型の問題になるんだ?別の問題だろう。
2019/06/15(土) 23:03:19.36ID:suvV29vR0
>>456
Rubyは第一級関数言語やで
Rubyはカッコを省略してメソッドを呼び出せるので関数オブジェクトの取り出し方がめんどくさいのは事実だけどね
だからかどうか知らんけど、Symbol#to_proc みたいなのもあるけど

まぁ、メソッドチェーンでできるんだから、パイプ演算子は要らんかなとは思う
462449 (ワッチョイ 9a2c-oZrO)
垢版 |
2019/06/15(土) 23:26:17.73ID:VnSVMhRs0
>>459
Windows10・WSL・Linux で、使っている人もいるみたい

普通に、Ruby Installer で、Windows に入れると、irb の日本語表示でバグる。
外人は、sjis を知らないから

漏れは、irb を使うために、WSL の方にも、Ruby を入れてるけど、
Windows で、VSCode で十分

ユーザー環境変数、RUBYOPT に、--encoding=UTF-8 を設定してる。
これを設定すると、irb が起動しなくなる!

Windows 版では、バグがあるかも知れないので、
Ruby の最新版を使わず、2.4, 2.5 を使う方がよい

>>461
Ruby は、第一級関数ではない。
処理をオブジェクトにするとややこしいから、第一級関数にしない方がよい
2019/06/15(土) 23:47:22.68ID:mKDC3u9y0
> Windows 版では、バグがあるかも知れないので、
Windows 版使わないほうがいいっすね〜
464デフォルトの名無しさん (ワッチョイ 3e7c-jEB4)
垢版 |
2019/06/16(日) 11:55:03.74ID:NdAq/MEw0
windows なら素直に python 使え
無理して ruby 使ってもロクなことにならない
2019/06/16(日) 12:01:22.73ID:0yrhG5qHM
長く使うものを作るならGoも良い選択
Windowsで問題なく動く
JavaやPythonもそうだけど、最終的にはWindowsでの開発と相性のいいものが選ばれるんだよ
2019/06/16(日) 13:03:24.87ID:cl8tkhE+0
Windowsを捨てるのが一番良い。
2019/06/16(日) 17:50:50.68ID:ALGkmXda0
windowsでbatやpowerscript代わりにRuby使ってる
それ以上のモノをwindowsで作りたいならおとなしくC#使うべき
468デフォルトの名無しさん (ワッチョイ 9a01-nQaC)
垢版 |
2019/06/16(日) 21:33:59.28ID:keFwsV830
Windowsでちょっとしたスクリプトを書くなら、AutoHotkeyがお手軽かつ強力だな。
2019/06/17(月) 00:16:36.52ID:aG6Vt+AG0
>>468
Hot Soup Processer もw
470デフォルトの名無しさん (ワッチョイ 1ab0-bbbA)
垢版 |
2019/06/18(火) 06:18:25.72ID:3nOE2mBA0
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/

142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
471デフォルトの名無しさん (ワッチョイ 9a2c-oZrO)
垢版 |
2019/06/18(火) 22:50:32.33ID:PmBejiWq0
雑誌、WEB+DB PRESS Vol.110 (2019/4/25) では、

RubyVM を作った、Cookpad の笹田耕一による、Ruby 実装系の新連載が始まった!
2019/06/21(金) 15:19:36.87ID:LkxS+Sdt0
Sorbetの型注釈の書き方最悪だな
matzの言うことなんか無視して、ドキュメントを含めた統一的な型注釈の書き方を決めるべきだったのに
2019/06/22(土) 11:20:25.22ID:xaZv7O+80

お前さんの考える最高の書き方は具体的にどういうモンなの
2019/06/22(土) 16:41:03.20ID:ICCmixle0
>>471
買いました!
2019/06/23(日) 19:01:19.76ID:WHM6Ibwm0
日本語のような全角を2
英語のようなのを1
で計算する
printf を使えますか?

perl などでは日本語と英語がまざると
端末に出力するときの整形を printf と %s にまかせられません ずれます

この言語 ruby は日本人が作ったので
なにか日本語まじりの英語も整形する手段、ライブラリがあるかもしれない
そう思って訪ねに来ました

ruby には
日本語も整形できる手段ありますか?
スマートなprintfの類ありますか?
2019/06/23(日) 19:10:36.01ID:xc930vdW0
ソースをUTF-8で記述
2019/06/23(日) 20:29:44.45ID:WHM6Ibwm0
ありがとうございました
日本語3文字を length が 6 と
2019/06/23(日) 20:30:03.52ID:WHM6Ibwm0
返してくれるので
これで楽に書けます
2019/06/23(日) 22:54:23.73ID:MSRPr+EY0
> 日本語3文字を length が 6 と
だめじゃんw
6を返すってことは6じゃない場合もあるってことだからな
2019/06/23(日) 23:29:15.95ID:kDz3gLp60
つうか、3文字で6ってなんやねん?
9ちゃううんか?
2019/06/24(月) 08:44:42.15ID:xbxTg/onM
lengthとbytesizeは違う
2019/06/24(月) 10:39:06.34ID:GG24ezzu0
いずれにしろ
日本語3文字が6と返ってくるのはおかしい
483デフォルトの名無しさん (ワッチョイ 4b7c-Kkfr)
垢版 |
2019/06/24(月) 12:29:01.33ID:NW8XqAfb0
API で横幅を取得
East Asian Width
http://www.unicode.org/reports/tr11/
https://ja.wikipedia.org/wiki/%E6%9D%B1%E3%82%A2%E3%82%B8%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%B9%85
484デフォルトの名無しさん (スップ Sdca-rCja)
垢版 |
2019/07/01(月) 12:54:44.12ID:fiA0UtsUd
Pythonなんかだと
printとinputですが
Rubyでは
putsとgetsと三単現のsがつきますよね

命令文なので二人称のputとかgetにした方が良いと思うのですが…
何でRubyは基本的な英語の語法を無視しているのですか?
2019/07/01(月) 12:57:54.84ID:MoEwNeEzM
put stringの略だとよwww
to_sとかもそうだけどjap engrish思考よなwwww
486デフォルトの名無しさん (スップ Sdca-rCja)
垢版 |
2019/07/01(月) 12:59:27.33ID:fiA0UtsUd
>>485
いや、よく理解出来ました
考え方として賛成はしかねますが納得は出来てすっきりしました
ありがとうございましたm(_ _)m
2019/07/01(月) 13:00:37.00ID:ywGyCn2/0
printf が print format の略であるように、
puts が put string の略なのは
C言語由来ですよ?
488デフォルトの名無しさん (スップ Sdca-rCja)
垢版 |
2019/07/01(月) 13:06:28.54ID:fiA0UtsUd
>>487
いろいろありがとうございます
己の無知を反省します
489デフォルトの名無しさん (ワッチョイ 15e7-3lym)
垢版 |
2019/07/01(月) 17:05:10.98ID:2m4t7V760
>>485
またもやアンチRubyが無知を晒したか
C言語の標準ライブラリに関する知識も無しに批判するとは何とも恥さらしな


>>484
Ruby なんかだと可変(mutable)と不変(immutable)なメソッドは
たとえば sort! と sort ですが、
Python では sort と sorted と不変な操作には過去分詞の -ed がつきますよね

宣言や表明ではないし、ましてや過去の時系列とは無関係なので
可変を明示する sort! と sort にした方が良いと思うのですが…
何で Python は基本的な英語の語法を無視しているのですか?
490デフォルトの名無しさん (アウウィフ FF11-a57L)
垢版 |
2019/07/01(月) 17:05:17.93ID:87GWfzf4F
startswith や endswith には s ついてる
2019/07/01(月) 18:04:52.69ID:MoEwNeEzM
識別子に?や!使えるようにしてるもんだから他の言語は?.のところ&.なんだよなwww
ダッサwwwww
2019/07/01(月) 19:31:12.97ID:sgfBLVFM0
>>489
sort「!」なんかの時点で、もう英語は関係ないやろ!w
2019/07/02(火) 04:10:59.33ID:uMGeffjZ0
PowerShell -Part 3

744デフォルトの名無しさん2019/07/01(月) 14:41:57.11ID:YzHO/9WR
>>743
どうでもいい

745デフォルトの名無しさん2019/07/01(月) 16:21:19.60ID:MoEwNeEz
>>743
死ね

745は、色んなスレに「死ね」って書いてる荒らし。ID:MoEwNeEz。
荒らしは必ず、複数の書き込みをするので要注意!

Ruby 初心者スレッド Part 65

485デフォルトの名無しさん (アメ MM39-rSnO)2019/07/01(月) 12:57:54.84ID:MoEwNeEzM
put stringの略だとよwww
to_sとかもそうだけどjap engrish思考よなwwww

491デフォルトの名無しさん (アメ MM39-rSnO)2019/07/01(月) 18:04:52.69ID:MoEwNeEzM
識別子に?や!使えるようにしてるもんだから他の言語は?.のところ&.なんだよなwww
ダッサwwwww
2019/07/02(火) 08:05:59.97ID:b3K46sKz0
>>493
他人をどうこういう前に、お前の書き込み履歴と鏡を見直せ
495デフォルトの名無しさん (ワッチョイ a97c-a57L)
垢版 |
2019/07/02(火) 09:54:03.28ID:dJ0Zw08U0
493 は死んで良い
2019/07/03(水) 12:11:49.04ID:+RO4gFPu0
俺も493は死んでいいと思う
497デフォルトの名無しさん (ワッチョイ ff2c-NenP)
垢版 |
2019/07/10(水) 14:15:50.44ID:Jbt6AAsO0
redo は、現在のループをやり直すけど、
ループを最初の要素から、やり直すにはどう書く?

例えば、3 なら、また1 からループを始める

ary = [ 1, 2, 3, 4 ]

ary.each do |num|
p num if num == 3
end
498デフォルトの名無しさん (ワッチョイ 03e7-MLAK)
垢版 |
2019/07/10(水) 15:22:02.98ID:tfcMfkAP0
>>497
http://ideone.com/8UfEyv

もしもCPUの仕組みを知っていれば、制御変数 i は
プログラムカウンタのことだと見立てることができます
さらに抽象化して、もしもステートマシンを知っていれば:
・ブロック do .. end は状態遷移を表し、
・ブロック引数 i は遷移元状態であり、
・ブロックの評価値は遷移先状態であると
見立てることができます

なお、loop.inject というパターンは過去にも別スレで利用しました
 https://mevius.5ch.net/test/read.cgi/tech/1415419907/264
 > なおメソッド loop は一般に loop do .... end という手続き型のスタイルで
 > 書かれることが多いために ループ構文の一種と誤解されがちですが、
 > (lambda を構文糖であると >>254 が 勘違いしたように....)
 > loop はメソッドですので(コードで示したように) inject へ
 > チェーンさせることができます
2019/07/10(水) 16:16:11.40ID:Jbt6AAsO0
require 'prime'

p ary = Prime.prime_division( 18 )
#=> [[2, 1], [3, 2]]

18 を素因数分解した結果、

[[2, 1], [3, 2]]、2が1回, 3が2回みたいな表記を、
単純に、[2, 3, 3]のように開くには、どうすればよいですか?
2019/07/10(水) 16:39:54.23ID:Jbt6AAsO0
>>498
ありがとう

loop.inject か、トリッキー!
どちらも使い慣れないから、頭を使う!

each_with_index, each_with_object では、ダメなのか
501デフォルトの名無しさん (ワッチョイ 03e7-MLAK)
垢版 |
2019/07/10(水) 17:37:17.74ID:tfcMfkAP0
>>499
[[2, 1], [3, 2]].flat_map { |n, e| [n] * e }
#=> [2, 3, 3]
2019/07/10(水) 18:02:55.65ID:Jbt6AAsO0
>>501
ありがとう

flat_map は便利ですね
503デフォルトの名無しさん (ワッチョイ 3f2c-QKg6)
垢版 |
2019/07/20(土) 14:16:26.97ID:NKxgAyGK0
乱数はメルセンヌツイスタらしいけど、
偏るので、マシなやり方はないですか?

Array.new( 25 ) { rand( 1..9 ) }

出力
[3, 2, 4, 3, 6, 3, 1, 3, 7, 6, 1, 9, 3, 2, 5, 6, 6, 7, 5, 6, 3, 3, 8, 4, 9]
[5, 8, 4, 1, 3, 3, 2, 2, 9, 7, 9, 7, 7, 6, 7, 4, 3, 4, 5, 4, 8, 8, 7, 2, 5]
[7, 7, 6, 7, 9, 5, 8, 2, 8, 5, 1, 8, 4, 9, 3, 3, 9, 8, 6, 1, 1, 3, 5, 7, 2]
504デフォルトの名無しさん (エムゾネ FF5f-CMz4)
垢版 |
2019/07/20(土) 14:25:34.88ID:1y0e4GF6F
a=[3, 2, 4, 3, 6, 3, 1, 3, 7, 6, 1, 9, 3, 2, 5, 6, 6, 7, 5, 6, 3, 3, 8, 4, 9]
b=[5, 8, 4, 1, 3, 3, 2, 2, 9, 7, 9, 7, 7, 6, 7, 4, 3, 4, 5, 4, 8, 8, 7, 2, 5]
c=[7, 7, 6, 7, 9, 5, 8, 2, 8, 5, 1, 8, 4, 9, 3, 3, 9, 8, 6, 1, 1, 3, 5, 7, 2]

(a+b+c)/3
2019/07/20(土) 16:32:33.97ID:/lD6o5wQM
>>503
なぜ偏っていると思ったの?統計取った?
Rubyistは一般にあまりレベルが高くないとはいえ、Rubyのコミッタ陣は少なくとも今の君よりは知識も能力も経験も上だと思うよ
506デフォルトの名無しさん (ワッチョイ 7f2d-ShKg)
垢版 |
2019/07/20(土) 17:05:02.08ID:wkIhGLkm0
2人コミッター知ってるけど何の専門家でもなければまともな経歴でもないよ・・・・
507デフォルトの名無しさん (ワッチョイ 4f7c-CMz4)
垢版 |
2019/07/20(土) 17:08:41.13ID:ppdy8tl00
メルセンヌツイスターって初期化しなくて良いんだっけ
2019/07/20(土) 17:54:18.98ID:QHhW8HGw0
>>504
乱数で平均値を取ったら中央値に近づいて偏りが酷くなるだけじゃね
2019/07/20(土) 17:57:37.26ID:NKxgAyGK0
Kernel#rand の種は、現在時刻で初期化されるから、意識しないでもよい

統計を取れば、平均になるだろうけど、1回1回が偏る。
例えれば、

1回目 : 3,3,1,1,3,3,1,1
2回目 : 2,2,8,8,2,2,8,8
3回目 : 5,5,9,9,5,5,9,9

平均すると、まんべんなく出るのだろうが
2019/07/20(土) 18:02:25.41ID:NKxgAyGK0
例えば、503 で偏る部分は、

5, 6, 6, 7, 5, 6
9, 7, 9, 7, 7, 6, 7
7, 7, 6, 7
9, 3, 3, 9

何回やっても偏る
511デフォルトの名無しさん (ワッチョイ 4f7c-CMz4)
垢版 |
2019/07/20(土) 18:37:19.17ID:ppdy8tl00
おま環かどうか切り分けるために
codepad.org
とか
ideone.com
あたりで実行してみたら
512デフォルトの名無しさん (ワッチョイ 4f7c-CMz4)
垢版 |
2019/07/20(土) 18:37:49.12ID:ppdy8tl00
おま環かどうか切り分けるために
codepad.org
とか
ideone.com
あたりで実行してみたら
2019/07/20(土) 19:30:22.40ID:NKxgAyGK0
codepad は古すぎる!
p RUBY_VERSION #=> "1.8.6"

一方、Paiza.io では、"2.6.3"

[3, 6, 3, 8, 8, 9, 1, 3, 1, 4, 3, 8, 2, 2, 2, 6, 6, 9, 4, 2, 2, 9, 1, 1, 1]

これでも偏る

2, 2, 2, 6, 6
2, 2, 9, 1, 1, 1
2019/07/20(土) 19:33:04.24ID:2izalSzA0
1から9が完全に均等に出てほしいなら、(1..9).shuffleとでもすりゃいいんじゃね?
2019/07/20(土) 19:33:38.40ID:jbjCUWIF0
>>513
偏っているか、それともそうでないかを判断する基準をどのように記述していますか?
私には >>513 2 2 2 6 6 が偏っているようにはみえないのです、多分判断基準が違うのだと思います、なにか判断基準を書いていただけますか?
2019/07/20(土) 19:36:50.44ID:NKxgAyGK0
>>513
5, 7 が出てない

それに同じ数字が、3回続くのが、2回も出てる
2019/07/20(土) 19:40:04.58ID:CMictvk+0
まさか1桁の整数の乱数を10個取り出したら0から9までダブってないとかそういうのか
2019/07/20(土) 19:44:24.23ID:NKxgAyGK0
>>514
shuffle, sample も疑似乱数だから、 Kernel.#rand, Random と同じじゃないか?
2019/07/20(土) 19:46:37.50ID:eNhk7IpQr
アホらし
バカが騒いでるだけ
2019/07/20(土) 20:02:00.13ID:b/O9on/e0
乱数なんだから偏ってはいけない。
例えばサイコロを6回ふれば、必ず1〜6の数字が一回ずつ出るのが真の乱数だ
続けて1の目がでるなんてことはあってはいけない

俺の好きなテトリスも昔はテトリス棒が全然出なかったりしたもんだが
今のテトリスは同じものが続けて出ない。偏り無くまんべんなく出てくれるから
次に来るのが予測しやすい。これが真の乱数だ
2019/07/20(土) 20:09:09.31ID:CMictvk+0
つまりテトリスカンパニーのようにメルセンヌツイスタ株式会社みたいなのが数字の出る順番のルールを決めて
ひとつの言語にはひとつのメルセンヌツイスタライブラリしか認可しないというふうにして品質の
2019/07/20(土) 20:57:00.17ID:2izalSzA0
>>518
全然違う
shuffleはただ位置を入れ替えるだけだから、最初の10個には必ず0から9が1つずつ含まれる
これが君の望む乱数のようだからそうすりゃいいんじゃね?と言ってるだけ
2019/07/20(土) 21:02:21.62ID:2izalSzA0
>>522
その代わり、最初の9個を見れば10個目は100%予測できるから、そんなのを「普通は」乱数とは呼ばないんだけどな
ただ、君の言う乱数はどうやら普通とは違うようだから
2019/07/20(土) 21:11:50.98ID:CMictvk+0
ものによっては「7が最近出てないのでそろそろ出るはず」「1が何回も出るはずがない」を支持するデタラメ数が必要とされることはあるのだが
それは乱数で表現されるものではないので自前で実装するよりない
525デフォルトの名無しさん (ワッチョイ cf4e-NxfS)
垢版 |
2019/07/20(土) 21:43:20.93ID:/ET4uH9K0
乱数 まろやか で検索するといいぞ。ポイントは正規分布
2019/07/20(土) 21:51:55.20ID:NKxgAyGK0
JavaScript でも作ってみたが、これも乱数が偏っている。
7, 1, 7, 7, 5, 4, 7, 4, 1

function get_random_int( ) {
return function( ) {
const min = 1
const max = 9
return Math.floor( Math.random( ) * ( max + 1 - min ) ) + min ;
};
}

const ary = [ ...Array( 25 ) ].map( get_random_int( ) )

console.log( ary );

出力
[ 2, 8, 6, 2, 5, 7, 8, 1, 4, 6, 7, 1, 7, 7, 5, 4, 7, 4, 1, 3, 4, 5, 6, 8, 6 ]
527デフォルトの名無しさん (ワッチョイ cf4e-NxfS)
垢版 |
2019/07/20(土) 22:07:15.82ID:/ET4uH9K0
>>526
赤黒が1/2の確率で出るルーレットがあります。
三回回したところすべて黒が出ました。
次に赤が出る確率は?
一般人「1/2」
バカ「こんなに黒が続いたんだからそろそろ赤が出ないとおかしい!偏っている!だから赤100%だ!!」
2019/07/20(土) 23:53:39.37ID:QHhW8HGw0
>>526
乱数にけちつける前に10面ダイス買ってきて、10000回振って出目をメモして偏りを確認してこい。
それが片寄ってると思うなら、別の店でダイス買い直して再試行しろ。
終わるまでスレに帰ってくるなよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況