特定の自然数を出現させないような、乱数を生成する

こちらも必要になったのをきっかけに。


以前に「1からnまでの乱数をm個重複せずO(m)でランダムに選ぶrubyのプログラム」を書いた。

これを一般化した、「特定の自然数を出現させないような、乱数を生成するプログラム」が必要になったので、記事にします。


何がしたいか分かりやすくするために1つの例を挙げてみる。

例えば、1から10までの整数を一様分布で選ぶ。これを1000回行う。
結果は次のようになった。左から1番目の数字は1が選ばれた回数、左から2番目は2が選ばれた回数、以降同様。
83 107 90 94 95 103 120 112 91 105 
ここで、4つの数字1,5,7,8が乱数によって選ばれないように指定する。
回数をリセットし、もう一度上と同様の操作を行う。
0 162 178 162 0 175 0 0 165 158 
確かに、1,5,7,8が選ばれず、他の値が一様分布の確率で選ばれている、と言える。


続きを読む

スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : アルゴリズムとデータ構造

外部プログラム実行のタイムアウト処理(Ruby)

数か月放置し続けた問題


次のような動作をするプログラムを考えます。
  1. 時間のかかりそうな外部プログラムを実行する。
  2. 外部プログラムが終了したら、外部プログラムの標準出力を拾って、それを表示する。
  3. 2秒以内に終わらなかったら、外部プログラムをKILLする。

簡単そうですね?

実行環境はwindowsです。


続きを読む

テーマ : プログラミング
ジャンル : コンピュータ

tag : Ruby

odingameのhypersonicに参加していました

…随分前の話ですが。

Githubにソースコードを公開しています。
https://github.com/buyoh/codingame_hypersonic


README.mdに殆ど書いてあるのですが、一応ここにも同じ内容のものを書いておきます。

続きを読む

テーマ : プログラミング
ジャンル : コンピュータ

偏りのある乱数を生成する

整数乱数が欲しいので、実数の話はしません。



偏った乱数が欲しくなったので、コードを書いてみようと思う。

正規分布や二項分布のような数学的なものが欲しいのではなく、ゲームとか適当な実装に使えるような手抜き乱数が欲しい。

続きを読む

テーマ : プログラミング
ジャンル : コンピュータ

C++でrubyのinjectっぽい文を書く

そもそもRubyのArray.injectって何ぞ?

https://www.google.co.jp/search?q=ruby%20inject


arrayの総和と最大値を求めるプログラムをinjectを使って書くと、次のようになる。
(もっとすっきりとした書き方はある)
arr = [1,2,3]
sum = arr.inject(0){|s,e| s=s+e ; s}
max = arr.inject{|s,e| s = e if s < e ; s}

これをC++で使いたい。

続きを読む

テーマ : プログラミング
ジャンル : コンピュータ

tag : c++ Ruby

プロフィール

舞葉(ぶよう)

Author:舞葉(ぶよう)
github.io
はてなブログ(競プロ)

古い記事のソースコードは色分けしていないので、高機能テキストエディタに貼り付けたほうが見やすいかも。

検索フォーム
このブログについて
自分がつまづいた話題、なんとなく書きたいと思ったこと、ググったけど殆ど資料なかったぞオイ な話等をアップする予定。通りすがりでも、参考になっていただければと。プログラムの例外入力、メモリリークは責任負いません。投稿された記事は修正・削除する場合があります。
カテゴリ
タグ

HSP3アルゴリズムとデータ構造c++RubyJavaUnity画像解析C機械学習C#LinuxcodeIQKinectMinecraftTonyuSystemraspberrypiPythonHTML5音声制御Simulinkruby俺ルール通信制御Javascriptシミュレーション

counter-shinobi
固定記事
最新記事
最新コメント
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
1139位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
191位
アクセスランキングを見る>>