ページ 1 / 1
数列の作り方
Posted: 2016年1月07日(木) 20:03
by ライトニング
お世話になってます。どうしてもわからない事がまたあるのですがトピックの貼り方がわからないのですが
前回質問させていただいたトピック「格納」と「奇数数列」応用みたいな感じなんですが。
まず(1,2,5,6,19,21,55....)のような一つ目三つ目のように奇数番目の所の値だけ前の値を足しあわせた値より大きい値になる超増加数列を作りたいのですが。この場合だと(1,5,19,55...)の奇数番目の値が前の値を全て足しわせた超増加数列になっているような数列を作りたいのと
(1,2,4,8,16,32....)のような等比数列に (1,3,5,11,21,33....)のように上の超増加数列とは逆で偶数番目の値だけ前の値を全て足しあわせた値より大きい奇数の超増加数列を作りたいのですが
これらをどのようにすればいいかが全くわからない状態です。
説明が下手で申し訳ないですが何かアドバイスをいただけないでしょうか?
Re: 数列の作り方
Posted: 2016年1月07日(木) 21:21
by moba
初心者で恐縮ですが回答させていただきます。
コード:
int suretu[50];
int amari = 0;
for(int i = 0; i < 50; i++)
{
amari = i % 2;//2で割った余りを得る
if(amari == 0)
{
//奇数の処理(配列の要素の0番目の値を数列の1番目として扱う場合)
}else
{
//偶数の処理
}
}
こんな感じで分岐して、作る乱数の範囲を変えるのはどうでしょうか。
Re: 数列の作りかた
Posted: 2016年1月08日(金) 11:19
by ライトニング
アドバイスありがとうございます。
その方法のやり方でどのようにすればいれば今一ピンとこなくて...
Re: 数列の作り方
Posted: 2016年1月08日(金) 18:26
by moba
お詫びします。
僕では十分で適切な回答ができませんでした。
また、ライトニングさんの前回の投稿も見ていませんでした。
でしゃばってすみませんでした。
► スポイラーを表示
一応小学生水準の考え方でC++で書いてみました。
(なぜならそれが僕の自然な考え方だから!)
前回の投稿でコードを貼ってくださっているので、
そちらの方がずっと良いのだろうと思います。
重ね重ねでしゃばってすみませんでした。
一度回答者をやってみたかったのですが懲りました。
*rand() % A は0~(A-1)の範囲の乱数を作る
*ただ、乱数生成にrand()は使わない方がいいらしい
コード:
int suretu[50];
int amari = 0; int randMax = 0;//計算用
//数列の値を1から始める
int dainyu = 1; suretu[0] = dainyu;
int wa = dainyu;//これまでの全要素の和を入れる
for(int i = 1; i < 50; i++)
{
amari = i % 2;//2で割った余りを得る
if(amari == 0)
{
//奇数:(0 ~ iまでの全要素を足し合わせた値より大きい値を作る
randMax = wa;
dainyu = wa + 1//条件を満たす最低の値
+ rand() % randMax;//【要設定】てきとうな乱数(0~)を足す
}else
{
//偶数の処理
//(0 ~ iの全要素を足し合わせた値より小さい数を作る
dainyu = suretu[-1] + 1//前の要素より1大きい値
+ rand() % (wa - (1 + suretu[-1]) );//条件を満たす全ての範囲の数となる乱数 を足す
}
suretu[i] = dainyu;
wa += dainyu;
}