はじめまして、課題が解けず色々調べていたら行き着きました
C言語掲示板というのは承知して居ますが、皆様の力を貸して頂けたら嬉しいです!
内容はこんな感じです
1~100
までのランダムな数値を20個抽出し、
数字が大きな順番に並び変え出力するプログラムを書きなさい。
ただし、以下の条件を満たさなくてはいけません。
・20個の数値は重複してはいけない
・20個の内10個以上は51以上の数値でなければいけない
・20個の内5個以上は50以下の数値でなければいけない
・並び変えに標準関数(qsort・asort・ksortなど)を利用してはいけない
これをPHPにて解いているのですが、1~100の乱数を重複無く抽出し、
大きな順(に並べると言うところは出来ているのですが
10個以上の51以上及び5個以上の50以下の数値と言うのが
どう書いて良いのか分からず躓いています。
ちなみにですが並び替えはバブルソートで行っています。
力を貸してくれる方居ましたら、ソースコードをそのまま頂けるととても嬉しいです!
よろしくお願いします。
PHP教えてください!
Re: PHP教えてください!
そもそもランダムに抽出することと、51以上・50以下の数を選択的に抽出することは矛盾していると思うのですが。
条件を満たすまでランダムな抽出を繰り返すということなんでしょうか。
あと、宿題の丸投げは禁止です。
条件を満たすまでランダムな抽出を繰り返すということなんでしょうか。
あと、宿題の丸投げは禁止です。
Re: PHP教えてください!
乱数の最大値を51にして五回抽出
最大値は同じまま抽出した値に50足したものを10回
残りは最大値100で抽出してみたら如何でしょうか?
間違ってるかもしれません。
最大値は同じまま抽出した値に50足したものを10回
残りは最大値100で抽出してみたら如何でしょうか?
間違ってるかもしれません。
Re: PHP教えてください!
整数しか抽出しない場合は
1. 51以上100以下の数値を10個抽出する
2. 1以上50以下の数値を5個抽出する
3. 1以上100以下の数値で、1および2で抽出された数値以外のものを1個ずつ格納した配列を作る
4. 3で作った配列の中から数値を5個抽出する
でいいと思います。
実数を抽出する場合は、
1. 51以上100以下の数値を10個抽出する。これまでに出た数値と被ったら捨てて抽出し直す。
2. 1以上50以下の数値を5個抽出する。これまでに出た数値と被ったら捨てて抽出し直す。
3. 1以上100以下の数値を5個抽出する。これまで(1,2で出たものも含む)に出た数値と被ったら捨てて抽出し直す。
でいいと思います。
1. 51以上100以下の数値を10個抽出する
2. 1以上50以下の数値を5個抽出する
3. 1以上100以下の数値で、1および2で抽出された数値以外のものを1個ずつ格納した配列を作る
4. 3で作った配列の中から数値を5個抽出する
でいいと思います。
実数を抽出する場合は、
1. 51以上100以下の数値を10個抽出する。これまでに出た数値と被ったら捨てて抽出し直す。
2. 1以上50以下の数値を5個抽出する。これまでに出た数値と被ったら捨てて抽出し直す。
3. 1以上100以下の数値を5個抽出する。これまで(1,2で出たものも含む)に出た数値と被ったら捨てて抽出し直す。
でいいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)