プログラム(BASIC) 教えてください

このQ&Aのポイント
  • BASICプログラムで、入力した整数kに対し、3, 5, 7, 9のいずれかの値をランダムに発生させ、k個表示する方法を教えてください。
  • BASICプログラムで、初項a、公差r、長さnの等差数列からいずれかの値を等確率で発生させる方法を教えてください。具体的な例として、入力されたa, r, n, kに対して等差数列の値をランダムにk個表示するプログラムを教えてください。
  • BASICプログラムで、0, 2, 4, 6のいずれかの値をランダムに表示する方法を教えてください。具体的なコードを示し、解説もお願いします。
回答を見る
  • ベストアンサー

プログラム(BASIC) 教えてください

(1) INPUT文で入力した整数 k に対し, 3, 5, 7, 9 のいずれかの値をランダムに等確率で発生し,改行せず横に続けて k個 表示させるプログラム (2)初項 a ,公差 r ,長さ n の等差数列 a, a+r, a+2r, ..., a+(n-1)r のいずれかの値を等確率で発生させるためには,乱数をどのような式で作れば良いか? INPUT文で与えられた a, r, n, k に対して,この等差数列のいずれかの値をランダムに k 個表示させるプログラム (1)は0,2,4,6を考えてから+3すればいいと思うのですがランダムに0,2,4,6を表示するプログラムの仕方が分かりません。 10 INPUT k 20 FOR L=1 TO k 30 RANDOMIZE 40 PRINT INT(   )+3; 50 NEXT L 60 END 解説があるとありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>0,2,4,6を考えてから+3すればいい… 既にほぼ正解に辿り着いていると思われますが。 (1) RND(1)*4で0~4未満の乱数を取得。 ↓ INTで整数化…[0,1,2,3] ↓ 2を掛ける…[0,2,4,6] ↓ 3を足す…[3,5,7,9] なので、 INT(RND(1)*4)*2+3 (2) あらかじめ、配列変数Xを宣言しておく。 FOR i=1 TO n X(i)=a+((n-1)*r) NEXT i FOR j=1 TO k PRINT X(INT(RND(1)*n)+1) NEXT j 配列Xに所定の数値を格納する処理をn回繰り返し、1からnまでの乱数で、そのうちのいずれかひとつをランダムに選定し表示、という処理をk回繰り返します。 但し、nが1以上の整数であること。 入力者が、0とか0.5とかをINPUTしてしまう恐れがある場合、それはそれで別に判定文を設けて例外処理をします。 また、n=1の時、答えはa一択になるので、それがイヤな場合も、併せて事前処理をしておきます。 (例:IF n<2 THEN 変数をリセットして再度INPUT行へ飛び、入力のやり直しを促す、等)

rider88
質問者

お礼

丁寧な解説、ありがとうございました。

関連するQ&A

  • プログラム 教えてください

    1.INPUT文で入力された整数kに対し,3以上7以下の整数をランダムに(等確率で)k個生成し,同じ行に表示させるプログラム 2.INPUT文で入力された整数m, n, kに対し,m以上n以下の整数をランダムに(等確率で)k個生成し,同じ行に表示させるプログラム を教えてください。

  • プログラム作成に関して

    配列にn個のa(1),a(2),…a(n)という値が与えられているとき、 このn個の値の最小値を求めるプログラムの作成 DIM A(n) LET k=1 FOR i=1 TO n  IF A(i)<A(k) THEN   LET min=A(i)  END IF NEXT i END ※DIM A(n)はn個の配列 minは最小値である。 としたのですが、 A()の読み込みを表すには 出力を表すには どのようにしたらいいのですか? できるだけ詳しく教えてください。よろしくお願いします。

  • 高校数学の等差数列の問題です 4-1

    2つの数列a[n],b[n]は関係式b[n]=(1・a[1]+2・a[2]+......+n・a[n])/(1+2+....+n) (n=1,2,....)をみたしている b[n]が等差数列ならばa[n]も等差数列であることを示せ 解説は与式よりΣ[k=1→n]k・a[k]=b[n]・{n(n+1)}/2であるから n>=2において na[n]=Σ[k=1→n]k・a[k]-Σ[k=1→n-1] =n/2・{(n+1)・b[n]-(n-1)・b[n-1]} よってa[n]=1/2・{n(b[n]-b[n-1]+b[n]+b[n+1]} したがってb[n]が等差数列ならばb[n]-b[n-1]は定数で a[n](n>=2)はAn+Bの形になる(*) 所で与式によればa[1]=b[1]がいえる(b[0]はどんな値に決めてもよい) から(*)はn>=1においていえ、したがってa[n]は等差数列である とあるのですがn>=2において na[n]=Σ[k=1→n]k・a[k]-Σ[k=1→n-1]の所ですが、何故n>=2からなのですか?nは全部の数が当然含まれていていいと思ったのですが、駄目なんですか?駄目なら理由を知りたいです それと与式によればa[1]=b[1]がいえる(b[0]はどんな値に決めてもよい)の所でb[0]は何でどんな値でもいいのですか?そもそもb[0]なんて存在するんですか?普通b[1]とかからじゃないんですか?

  • 数学の問題でわからないところがあります。

    どなたか教えてください。 等差数列{an}があり、a2=14、a3-a7=12を満たしている。 (1)数列{an}の初項aと交差dを求めよ。また、一般項anをnを用いて表せ。 (2) 20                Σakの値を求めよ。   k=1 また、 20 Σ|ak|の値を求めよ。 k=1      (3)n≧10とする。 n Σ(|ak|-ak)をnを用いて表せ。 k=1 見にくくてすみません。 よろしくお願いいたします。

  • 数列 (漸化式)

    A[1]=1 A[n+1]=4A[n]+2^n (n=1,2,・・・) {A[n]}の一般項を求めたいのですが 両辺2^nで割って、B[n]=A[n]/2^(n-1)とおくと、 B[n]+1=2(B[n]+1)とおけるから特性方程式より、B[n]が2^n -1と求められました その後はA[n]=・・・ どうすればいいのでしょうか? 等差数列なら A[1]+ΣB[k] k=1~(n-1)という感じで求められたのですが・・・ この数列は等差数列なのか、等比数列なのか・・・ 一見等差数列のようですが、+2^nがついていてこれも定数じゃないから、等差数列ともいえないな・・・と思いました。 階差数列?とはいえないかもしれないけど、B[n]が求まったらその後の段階としてどうすればいいのでしょうか、よろしくおねがいします。

  • 等差数列の中間の項の問題

    Σベストの例題228の等差数列の中間の項の問題について質問です。 -8と18との間にn個の数a1,a2,…an入れ -8,a1,a2…,an,18 が公差1/2の等差数列になるようにしたい。個数nをいくらにすればよいか。また、公差2の等差数列になるとき、個数nはいくらか。 という問題で、着眼に末項18は第(n+2)項にあたるとありました。 しかしなぜ(n+2)になるのかがいくら考えてもわかりません。なのでどなたか教えてください。(できればわかりやすくお願いします…)

  • 模試の振り返り

    等差数列{an}があり a2=14,a3ーa7=12を 満たしている。 (1) 数列{an}の 初項aと公差dを 求めなさい。 また一般項anを nを用いて表しなさい。 (2) 20 Σak の値を求めなさい。 k=1 解き方と答えを宜しく お願いしますm(__)m

  • ある数列が等差数列であることを示す

    各項が正の数である数列{a_n}があり、任意の自然数nについて、a_2n-1、a_2n、a_2n+1はこの順に等差数列をなし、a_2n、a_2n+1、a_2n+2はこの順に等比数列をなす。 (1)a_2nをa_2n-1、a_2n+1を用いて表せ。また、a_2n+1をa_2n、a_2n+2を用いて表せ。 (2)数列{b_n}を、b_n=√(a_2n)で定めるとき、{b_n}は等差数列であることを示せ (3)a_1=2、a_2=4のときΣ(k=1~n)a_2k-1を求めよ (1)はa_2n=1/2(a_2n-1+a_2n+1)、a_2n+1=√(a_2n*a_2n+2) と求まったのですが、 (2)の{b_n}が等差数列であることを示すことができなくて困っています。(1)のa_2nを代入して隣同士の差を作ってもうまくできません。 それと(3)なのですが、a_2k-1が階差数列になると思うのですが、うまく計算できません。  答えが1/3n(n+1)(n+2)となることはわかっているのですが合わなくて・・・。 回答いただければ助かります。よろしくお願いします

  • 二項変換の逆変換、反転

    n個からk個とる組合せをC(n,k)=n!/k!(n-k)!と書くことにします。 数列a[0],a[1],a[2],…に対して、次のようにb[0],b[1],b[2],…を作る。 b[n]=Σ[k=0,n](-1)^(n-k) C(n,k) a[k] このとき、 a[n]=Σ[r=0,n]C(n,r) b[r] であることを示したいのですが、どのように変形していけばよいのでしょうか? なお、式は http://mathworld.wolfram.com/BinomialTransform.html を参考にしたので、書き間違いはないと思います。

  • 数列を教えて下さい

    等差数列{an}があり、a3=5、a7=13を満たしている。また、数列{bn}があり、b1=3、bn+1-bn=2n+3(n=1、2、3、……)を満たしている。 (1)anをnを用いて表せ。 (2)bnをnを用いて表せ。 (3)3^anの一の位の数をcn(n=1、2、3、……)とする。このとき、Σk=1で20まで(-1)^k・ck/bkの値を求めよ。 (1)は自力で解けました。 たぶんan=2n-1です。 残りの二つの解答を導く手順と解答を教えて下さい。