- 1 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 21:12:49.42 ]
- C言語の入門者向け解説スレッドです。
★前スレ C言語なら俺に聞け(入門編)Part 123 toro.2ch.net/test/read.cgi/mmo/1384247471/ ★過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 ★教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 166代目 toro.2ch.net/test/read.cgi/tech/1381909900/ ★C++言語については避けてください。C++対応明記スレへどうぞ。 ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。 # サイズが大きい場合はアップローダ等を利用してください。 codepad.org/ ideone.com/ ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 【重要】 当たり前の事ですが、2chではコピペ荒らしは禁止されています
- 2 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 21:15:46.23 ]
- >>1 リンク先間違えていました。ごめんなさい。
C言語なら俺に聞け(入門編)Part 123 toro.2ch.net/test/read.cgi/tech/1386947085/
- 3 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 21:51:15.40 ]
- 過去スレなんて見るやついないから別にいいよ
- 4 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 22:35:42.63 ]
- time()でプログラムの一定範囲の実行時間を調べたい場合、
time()自身の時間も加算してるんですか?
- 5 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 22:47:14.67 ]
- >>4
秒単位だしtime()自身の実行時間は気にしなくていいのでは
- 6 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2014/01/07(火) 22:48:07.37 ]
- time()やclock()は精度低い
Winならパフォーマンスカウンタ、Linuxならgetrusage()使え
- 7 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 23:21:07.95 ]
- このスレ親切すぎワロタwww
- 8 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 23:24:00.34 ]
- >>6
ありがとう!使ってみるわ
- 9 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 14:34:19.18 ]
- ビットマップ画像のピクセルごとのRGBの値を抜き出すプログラムを作りたいのですが、どうにも上手くできません。参考になるサイトがあったら教えてください。ちなみに使ってるのはLinuxです
- 10 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 14:39:23.31 ]
- libjpeg のソースの中に居たような...
- 11 名前:デフォルトの名無しさん [2014/01/08(水) 15:05:48.62 ]
- 結局前回の最後で示した構造体で、バ片山はどうやってセットオプションを実現するつもりだろうな。
int printsetoption( int head , int shirt , int arm , int pants , int boots , int armor , int belt , int shoulder ) { return 0; } こうやって装備を渡したらどのセットオプションが発動するかどうか判定して printfで表示するだけのコードでいいから書いてみて欲しい。
- 12 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 15:20:37.10 ]
- ファイルを開くときにダイアログが非常に重いのは理由がありますか?
C言語のソースコードを上書き保存するときはショートカットで済みますが 新規で保存する場合、ダイアログが開くのが非常に遅いです。 何とかなりませんかね?使ってるエディタはメモ帳、tredpadです。
- 13 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 15:45:18.33 ]
- >>9
toro.2ch.net/test/read.cgi/tech/1313183984/35
- 14 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 15:48:57.73 ]
- >>12
1)保存先ディレクトリにファイルが超多い 2)保存先にリンク先のないショートカットとか変なファイルがある 3)HDDがへたってきてアクセスが遅い 4)保存先がリムーバブルメディアまたはネット 5)保存ダイアログの不要なエディタ使う。viとか
- 15 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 15:52:15.97 ]
- >>11
配列か構造体にしてアドレス渡せよw
- 16 名前:デフォルトの名無しさん [2014/01/08(水) 16:08:02.51 ]
- >>14
いや一般的に遅いのは何故かなと、タブを切り替えるくらい早く ならないのは何故でしょうか?
- 17 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 16:11:40.21 ]
- >>15
そうしたらまた配列か構造体を宣言しなきゃならないだろ 装備の配列or構造体も影響する話じゃないの?
- 18 名前:デフォルトの名無しさん [2014/01/08(水) 16:17:52.51 ]
- 装備よりダメ計算のほうが気になる
RPGのダメってだいたいブレるけど、あれってどうやって実装してんの? 攻撃力と防御力で算出されたダメの±10%とか?
- 19 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 16:45:15.71 ]
- >>13
ありがとうございます! ……でも、画像をそのまま変換したいんじゃなくて、抜き出したRとGを計算したいんですよね……
- 20 名前:デフォルトの名無しさん [2014/01/08(水) 17:20:08.10 ]
- ビットマップの仕様なんて検索すればいくらでも出てくるだろ
俺がDDSからBMPに変換するライブラリ作ったときは誰にも質問しなかったぞ
- 21 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 17:33:36.62 ]
- >>20
いや、俺はあなたじゃないんでそんなこと言われても困ります
- 22 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 17:35:57.19 ]
- まじめにやると
色空間と トップダウン/ボトムアップ配置と 圧縮(ランレングス) への対応 後者側ほど省略(条件を限定しちゃう)されることが多いな
- 23 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 17:38:42.97 ]
- 画像のフォーマットくらい自分で調べてるだろうよ。
C言語も使える、画像のフォーマットも分かる、これでできないということはまさに「馬鹿には無理」 諦めろ。
- 24 名前:デフォルトの名無しさん [2014/01/08(水) 17:52:10.86 ]
- >>18
どうせ運ステータスとかあるでしょ 運ステータス使えば?
- 25 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 18:29:24.12 ]
- プログラム組んでるとパソコンのファンの音がうるさくなります。
またプログラムの実行時間が遅いんですが、ビデオカード入れたら早くなりますか? 後、ビデオカード、アクセラレータ、グラフィックボードの違いが分かりません。
- 26 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2014/01/08(水) 19:05:19.43 ]
- >>18
「正規分布 C言語」で検索
- 27 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 19:18:15.06 ]
- if(x=100)
{ 処理 } 一番単純でxに100という値を代入した時だけ処理をする 認証式プログラムを作りたいのですが、これだと総当たりで アクセスされてしまう可能性があるからこういう方法を考えました 「この問題を解け、りんごみかんが合計で5個ある、1個の値段は りんご100円、みかん5円である。5個の値段が310円のとき、りんご みかんは何個あるか」 この問題が解けた時だけ処理を行うプログラムにしたいです。 こうすれば良いと思うのですが具体的な実装方法が分かりません。 何かアイディアありますか?
- 28 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 19:21:04.84 ]
- >>26
テメーはセットオプションのサンプルコードでも書いてろ
- 29 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 19:21:34.60 ]
- スワヒリ語でおk
- 30 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 19:22:53.88 ]
- 問題を解かせてその解をパスワードにするってことですよ。
そういうプログラムってあるんですか?
- 31 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2014/01/08(水) 19:26:39.47 ]
- 方程式の自動作成だな
{ax+by==c, {x+y==z (a,b,c,x,y,zはすべて正の整数)
- 32 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2014/01/08(水) 19:34:18.62 ]
- ディオファントス方程式でぐぐれ
x+y<=10 a!=b
- 33 名前:30 [2014/01/08(水) 19:37:50.46 ]
- あプログラムもその問題を解くって事ですね。
だからプログラムが正しい答えを導かないとダメで、連立方程式とかだと 問題が簡単なので、つまり難易度の高い問題を公開でって事ですかね。
- 34 名前:30 [2014/01/08(水) 19:42:48.27 ]
- あ公開したら解かれますね…
- 35 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 mailto:sage [2014/01/08(水) 19:44:12.11 ]
- 8種類くらい用意してランダムで出すといいだろう
小学生でも解ける問題にしないとユーザがあきらめる可能性大
- 36 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 19:53:49.02 ]
- >>28
そんな検索にもかからない俺様マイナーワード振り回されても困ります!!
- 37 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 mailto:sage [2014/01/08(水) 20:00:58.93 ]
- 「セットオプション」をキーワード検索でトップ10に入ったら認めてやる
- 38 名前:デフォルトの名無しさん [2014/01/08(水) 20:06:55.92 ]
- ラングレンス符号化について質問です。
あれって未だに使われてるんですか?圧縮率ってかなり悪いと思いますが どうなんでしょう?AAAABBBBCCC A4B4C3ってやつです。
- 39 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 20:09:45.75 ]
- バ片山が変な条件出して逃げたwwwwwwww
- 40 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2014/01/08(水) 20:10:49.18 ]
- ReactOSでRLEビットマップを見た。
同じ色が連続するイラストで圧縮率が高い
- 41 名前:デフォルトの名無しさん [2014/01/08(水) 20:13:45.46 ]
- 片山が逃げたというよりCが欠陥言語だから実装が難しいだけ
- 42 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 20:19:03.88 ]
- セットオプションってFF4か何かで共鳴って名前ついてなかったっけ?
- 43 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 mailto:sage [2014/01/08(水) 20:20:59.82 ]
- >>11
ビットフラグ使えば簡単だって知ってるでしょ? からかわないで
- 44 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 20:29:05.13 ]
- 片山博文MZは眠れないから一日中2chに書き込みを入れる
眠れない原因? それはドーパミンが過剰分泌されているからです。 どういう症状かわかったならいますぐ医者で抑制剤をもらってきましょう。
- 45 名前:デフォルトの名無しさん [2014/01/08(水) 20:33:34.38 ]
- 片山にできないことがお前らにできるわけないだろボケ。
- 46 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 mailto:sage [2014/01/08(水) 20:35:45.50 ]
- int printsetoption(ITEM items[NUM_SOUBI])
{ int i;unsigned long attr_flags; attr_flags=(items[0].flags&ATTR_MASK); for(i=1;i<NUM_SOUBI;i++) { attr_flags&=(items[i].flags&ATTR_MASK); } if(attr_flags){...} return 0; }
- 47 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 20:56:52.32 ]
- >>45
いくら努力しても糖質には成れないな。
- 48 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 21:06:05.96 ]
- ここでやるなってんだろバカども
- 49 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 21:09:07.72 ]
- 日本語でおk
- 50 名前:デフォルトの名無しさん [2014/01/08(水) 23:05:11.29 ]
- こっちにおいでおいで
ゲームプログラムなら俺に聞け30 toro.2ch.net/test/read.cgi/tech/1388933972/
- 51 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 23:20:08.89 ]
- ×こっちに
○こっちへ
- 52 名前:デフォルトの名無しさん [2014/01/09(木) 15:23:59.45 ]
- 19%の確率で1が出て、37%の確率で2が出るような玩具のコードは一般化した場合どう書けばいいでしょうか?
それぞれの試行は独立してなくて、例えば上記の場合だと、100回やればだいたい19回1が出て、37回2が出るような感じです 一般化というのは、これを19%と37%の固定ではなく、任意の確率と任意の個数指定できるようにしたいのです 例えば、8%、11%、3%、16%、20%のように好きな数だけ好きな確率を指定したいです
- 53 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 15:25:29.25 ]
- つ 乱数
- 54 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 15:46:49.34 ]
- double p = drand48();
double prob[5]={0.08, 0.11, 0.03, 0.16, 0.20}; for(i=1; i<5; i++) prob[i] += prob[i-1]; for(i=0; i<5; i++){ if (p < prob[i]) break; } result = i;
- 55 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 15:49:57.27 ]
- probの合計を1になるようにせねばいかんよ
- 56 名前:デフォルトの名無しさん [2014/01/09(木) 15:54:40.99 ]
- >1になるように
「1以下になるように」ではなくて?
- 57 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 15:56:42.08 ]
- 確率が整数までで良いのなら
出目の型(int) の大きさ100の配列(array)を用意して、頭から出目を並べる。 int array[100] <<19個>><<37個>> 111...1111222....222 出目の範囲が 1〜3 だとすると入力は 出目1の確率 出目2の確率 とし、3で埋めたあとに、1, 2 を 並べたほうがよさそう (入力確率の総和が 100% にならないといけないから) 実際に振った結果は 0 〜 99 の乱数でえられた値を i とすると array[i] で得る
- 58 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:01:54.68 ]
- わざわざ劣化版の回答を後出ししなくても…
- 59 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:02:11.97 ]
- >>56
> 0.08 / 1.00 => 0.08 > 0.08 / 0.58 => 0.13793103448275865
- 60 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:04:47.56 ]
- 好きな数だけ好きな確率を指定した結果
総和で 100% になってない場合はどうしたいの? 総和で 100% を超える場合はどうしたいの?
- 61 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:04:48.56 ]
- O(1)なのに劣化版
- 62 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:05:47.78 ]
- >>60
総和が1にならないものは確率なのか
- 63 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:07:15.23 ]
- >例えば、8%、11%、3%、16%、20% のように好きな数だけ好きな確率を指定したいです
これだけ読むと そういう疑問が出てきたわけで
- 64 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:07:21.07 ]
- >>54のは線形探索だから2分探索で高速化出来るね
- 65 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:09:00.77 ]
- >>64
最初に累積値を超えたところが結果になるから二部探索にはできないはず
- 66 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:10:20.14 ]
- >>65
出来るでしょ。
- 67 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:11:47.08 ]
- >>66
じゃ、書いて
- 68 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 16:29:21.29 ]
- 2分探索だと2回ずつ比較してくことになって、数にもよるけど高速化にはならないんじゃ
- 69 名前:デフォルトの名無しさん [2014/01/09(木) 16:59:44.77 ]
- >>54
ありがとうございます! それを参考になんとか完成しました! struct itemdb{ char name[32]; }; struct dropitem{ int itemid,percent; }; struct monster{ dropitem ditem[4]; int ditemnum; }; int main(){ int i,p; itemdb item[] = { "アルティメットソード","回復薬","魔法の鍵","ダイヤモンドシールド","何も落とさなかった" }; monster mob = { 0,2 , 1,4 , 2,8 , 3,16 ,4 }; for(i=1; i<mob.ditemnum; i++) mob.ditem[i].percent += mob.ditem[i-1].percent; srand((unsigned)time(NULL)); p = rand()%100; for(i=0; i<mob.ditemnum; i++){ if (p < mob.ditem[i].percent) break; } printf( "モンスターは %s を落としました\n" , item[i].name ); return 0; }
- 70 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:12:30.22 ]
- >>65,>>68
何を言ってるんだ? x[0]〜x[15]に確立を入れてfor(i=1; i<16; i++) x[i] += x[i-1]; そしてy = rand()%100; 最初にif (y<x[7])で比較して、 真なら if (y<x[3]) 偽なら if (y<x[11]) で比較、とやっていけばいいだろう
- 71 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:17:31.16 ]
- >>70
パイプラインハザードって聞いたことないの? というか、実際に動くコードかけよ
- 72 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:21:34.30 ]
- 書くまでもないだろうよ…w
- 73 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:22:15.68 ]
- >>69
お前のコードなんかおかしくね? ダイヤモンドシールドが思ったより出まくるうえに、200回くらいやってもアルティメットソードが1本も出ない。 それってダイヤモンドシールド16%でアルティメットソード2%ってこどたよね?
- 74 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:23:20.32 ]
- 誘導
ゲームプログラムなら俺に聞け30 toro.2ch.net/test/read.cgi/tech/1388933972/
- 75 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:23:52.65 ]
- >>72
俺はこう思う!だけでコードの書けない人ですね。わかります
- 76 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:24:05.66 ]
- >>74
アルゴリズムの疑問なのにそんな糞スレに誘導しても放置されるだけ
- 77 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:25:15.93 ]
- >>71
ベンチ測るほど大量のアイテムデータ考えるのダルいだろ
- 78 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:25:59.37 ]
- 言い訳一級建築士( ´,_ゝ`)プッ
- 79 名前:デフォルトの名無しさん [2014/01/09(木) 17:27:03.46 ]
- >>77
スクリプト組んで適当なゲームの攻略ページから武器一覧取得すれば済む話。
- 80 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:29:14.57 ]
- >>73
rand(笑)がネック
- 81 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:32:25.28 ]
- linear search と binary search
の worst case を考えてみよう 要素3つでいいよ 書くまでもない常識だろうに。
- 82 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:33:59.44 ]
- 教えて君 「書けないんだろ」
ホモ 「インポじゃないの」 ババア 「いくじなし」
- 83 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:34:40.64 ]
- >>81
お兄ちゃん、見苦しいからヤメて
- 84 名前:デフォルトの名無しさん [2014/01/09(木) 17:50:56.86 ]
- そもそもそれを高速化することに何の意味があるのか
- 85 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:52:33.95 ]
- メリットすら分からず劣化版だのとチャチャ入れるお馬鹿ちゃんがいるから
- 86 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:57:49.57 ]
- 劣化版って書いた人と線形探索版を書いた人は別の人だよ
というか、>>69の用途なら累積分布を求める必要ないんじゃないの
- 87 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:59:50.96 ]
- >>86
>劣化版って書いた人と線形探索版を書いた人は別の人だよ 分かるけど100%じゃないよね アナタがそのどちらかで無い限りw
- 88 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:00:49.13 ]
- >>87
線形探索かいたひとだもの
- 89 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:05:46.94 ]
- だったら自分の事を
線形探索版を書いた人 とか言うなよ 気持ちわりい
- 90 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:08:30.44 ]
- 二部探索の実装まだー
- 91 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:11:24.09 ]
- 確率が整数でいいのなら
>>57の方法が一番現実的だと思う 一度表さえ作ってしまえばO(1)で実行出来る
- 92 名前:デフォルトの名無しさん [2014/01/09(木) 18:18:23.37 ]
- >>89
何でテメーが気持ちよくなるレスしなきゃならねーんだ 個人的な感想はブログに書いてろ気持ちわりい
- 93 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:35:24.84 ]
- >>91
洗練されてない上、非現実的だってば 確率0.01を表すのにどうする?配列を10000個にするんだよ? そんな馬鹿な方法とる人はいない
- 94 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:36:58.13 ]
- 0.01%を表す
なんて誰がいっているのだろうか。
- 95 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:43:27.17 ]
- x11.s11.xrea.com/ff5_algorithms
こういうの参考にしたら?
- 96 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:45:59.19 ]
- > 例えば、8%、11%、3%、16%、20%のように好きな数だけ好きな確率を指定したいです
この文章を読んで ・整数しか選ぶつもりがないのでのみを整数を例示した ・特に深い考えはなくたまたま思いついた例が整数だけだったので整数のみ例示した どちらの解釈を選ぶかって話。 業務のヒアリングなら間違いなく後者の解釈で対応するけど2chの会話ならどっちでもいいんじゃない。
- 97 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:46:35.15 ]
- >>91
空間計算量とりすぎ
- 98 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:51:28.20 ]
- >52
#define PRC (1000) typedef struct {unsigned per,val;}prm_t; typedef struct {unsigned spn;prm_t*prm}sed_t; unsigned xrnd(sed_t*a) { if (a->prm);else return rnd()%a->spn; if (a->prm->per&&rnd()%PRC<(unsigned)((double)a->prm->per/a->spn*PRC)) return --a->spn,--a->prm->per,a->prm->val; unsigned r,t=(a->prm++)->val; while ((r=xrnd(a))==t){} return --a->spn,--a->prm,r; } #define SPN (1000) prm_t prm[]={{SPN*0.19,1},{SPN*0.37,2}},*pprm[]={&prm[0],&prm[1],NULL}; sed_t sed={SPN,pprm}; ... if (sed.spn);else sed.spn=SPN,prm[0].per=SPN*0.19,prm[1].per=SPN*0.37; x=xrnd(&sed);
- 99 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 19:00:03.86 ]
- >>69
それアホほど偏るんだけど? 関数化してsrandの前にSleep(1);入れて1000回ずつやったけど結果はめちゃくちゃ Sleep(1);入れないと偏りはもっとひどかったけどな とにかくゲームとして成立しない 高速化よりこっちのほうが重要だろうがゴミ C:\Users\美奈子\プログラム\テスト>itemdroptest アイテム[アルティメットソード] => 0 個 アイテム[回復薬] => 0 個 アイテム[魔法の鍵] => 0 個 アイテム[ダイヤモンドシールド] => 0 個 アイテム[何も落とさなかった] => 1000 個 C:\Users\美奈子\プログラム\テスト>itemdroptest アイテム[アルティメットソード] => 0 個 アイテム[回復薬] => 586 個 アイテム[魔法の鍵] => 0 個 アイテム[ダイヤモンドシールド] => 414 個 アイテム[何も落とさなかった] => 0 個 C:\Users\美奈子\プログラム\テスト>itemdroptest アイテム[アルティメットソード] => 855 個 アイテム[回復薬] => 0 個 アイテム[魔法の鍵] => 0 個 アイテム[ダイヤモンドシールド] => 145 個 アイテム[何も落とさなかった] => 0 個
- 100 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 19:07:53.43 ]
- 毎回 srand する奴はこちらへ
ゲームプログラムなら俺に聞け30 toro.2ch.net/test/read.cgi/tech/1388933972/
- 101 名前:デフォルトの名無しさん [2014/01/09(木) 19:11:57.42 ]
- srandにtime入れればそうなるわな。
windows.hオンクルードしてtimeGetTimeにすれば。
|

|