• ベストアンサー

プログラミング

画像のようなプログラムを作成したのですが乱数が120万個欲しいのですが実行しても何も表示されないです。自分で色々確かめてみたのですが12万回までならプログラムを実行することができるのですがそれ以上になると実行することができないのですが原因がわかる方がいれば教えていただきたいです。よろしくお願いします

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

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

大量の配列確保しようとしたけど、メモリが足りなかったって事では。 フツーに配列を宣言した時に確保される静的領域はそんなに大きくないです。 そういう大量のデータを扱う場合は、動的領域(ヒープ領域)のメモリを確保して使用するのが一般的です。 #define N 10000000 double d[N]; d[50000]=0.0; ↓ double *pd; pd = malloc(N * sizeof(double)); if(pd==NULL){printf("メモリ不足\n");exit(1);} pd[50000]=0.0; free(pd); って感じに書き換えるとか。 動的領域とか、mallocとかのキーワードで情報収集するのが良いかも。

mothiduki
質問者

お礼

情報集めてみます ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kteds
  • ベストアンサー率42% (1877/4428)
回答No.2

Bard AIが下記のように答えてくれました ---------- C で記述されたプログラムです。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int random_numbers[1200000]; srand(time(NULL)); for (int i = 0; i < 1200000; i++) { random_numbers[i] = rand() % 100; } for (int i = 0; i < 1200000; i++) { printf("%d\n", random_numbers[i]); } return 0; } ---------- 120万個の乱数を生成できるPythonプログラムです。 import random random_numbers = [] for i in range(1200000): random_number = random.randint(0, 100) random_numbers.append(random_number) print(random_numbers)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • プログラミングについて

    以下のプログラムをコンパイル、実行しようとするとコアダンプと表示されてしまいます。 おそらく配列がうまくいっていないというのは察したのですが、どううまくいっていないのかがわかりません。 原因を教えていただきたいです。 このプログラムは、Nを入力し、0~100までの乱数をN個表示させるものです。 配列を使っているのは、このプログラムが完成したのち、改良してその乱数同士を計算するプログラムにしたいためで、その途中段階でした。 環境は、Cygwinです。 ―――以下ソースコード――― #include <stdio.h> #include <math.h> #include <stdlib.h> int main(void){ int i,N; double u[N]; int ransu; printf("Define N : \n"); //得たい乱数の数を設定 scanf("%d",&N); for(i = 0; i < N; i++) { ransu = rand() % 101 ; //0~100までの乱数を得る u[i] = (double) ransu; printf("%.0f ", u[i]); } printf(" \n"); return 0; } 教えていただける方、いらっしゃいましたら教えていただきたいです。よろしくお願いします。

  • Cプログラミング

    授業で次のような課題が出されたのですが、うまく結果表示が出来なくて困っています。自分が1で相手が2なのに自分の負け。と出てしまったり・・・ そのようなプログラムを書けばよいのでしょうか? お答えよろしくお願いします。 乱数を使って計算機とジャンケンをするゲームを作成せよ。グーは“0”、チョキは“1”、パーは“2”として、人間の出す手はキーボードからの数値(0か1か2)入力を、計算機の出す手は乱数(0〜2の整数)を用いることとする。その勝敗を判定し、結果を表示させるようにすること。

  • プログラミングの課題が出たのですが、全く分からなくて手のつけようがあり

    プログラミングの課題が出たのですが、全く分からなくて手のつけようがありません。 どなたか教えて頂けませんか? 以下問題のその課題です。 以下の問題に対応するJavascriptのプログラムを作成して、システムにアップロードしてください。 標準問題 1.円の面積 (1) prompt を用いて数値を入力し、alert を用いてその数値を半径とする 円の面積を表示するプログラムを作成せよ。 なお、円周率は Math.PI で得られる。(例えば、2πは 2 * Math.PI;) 2.繰り返し promptを用いて100以下の数値を入力し、1から順に整数をdocument.writelnなどで表示せよ。ただし、3の倍数と3のつく整数の場合に、文字が大きく表示(サイズ7など)されるように工夫せよ。 3.乱数 1 から 100 までの値(整数)を乱数で決定し、その値を document.write を用いて表示するプログラムを作成せよ。 なお、0以上、1未満の乱数は Math.random()、ある数 n の小数点を切り上げた整数は Math.ceil(n) で得られる。 4.数当てゲーム 1 から 100 までの値(整数)を乱数で決定し、その値を正解するまで prompt による数値の入力を繰り返すゲームを作成せよ。 入力した値が正解より大きい場合は「もっと小さい」、 正解より小さい場合は「もっと大きい」、 正解した場合は「正解です」と、それぞれ alert を用いて表示せよ。 当然、正解は表示してはいけない。

  • VBS 2008プログラミング得意な方!

    VBS 2008プログラミング得意な方! 次の内容を実行するにはどのようなプログラミングを作成すれば よいのでしょうか????? その1  textbox1に数字(個数)を入れ実行ボタンを押すとその個数分の乱数の平均値をtextbox2に表示される。 *乱数値は0~100の範囲 *乱数はあらかじめ1000個分発生させる その2 二次元配列による九九の計算 表示したい段をtextbox1に入力し、実行ボタンを押すと段の計算結果がtextbox2に表示される 教えてください!お願いします!

  • Win32 画像処理プログラミング

    Win32プログラムを使って画像処理を行えるプログラムを作成したいのですが、自分ひとりではどうにもなりません。 プログラムの仕様は、 (1) メニューバー「ファイル」、「画像処理」、「ヘルプ」の作成。 (2) 「ファイル」のカスケードメニュー「画像を開く」、「画像を保存する」、「プログラムを終了する」の実行。 (3) 「画像処理」のカスケードメニュー「ビットプレーンの作成」、「領域分割」、「輝度分布の計算」の実行。 この3点です。 関数や構造体を使って最初から組まなければ成りません。 なるべく詳しいプログラムを教えてください。 ( ソースコードを教えていただけるとありがたいです。 ) よろしくお願いします。

  • プログラミングについて

    課題1: キーボードから整数a, b の値を入力し, を計算して表示するプログラムを作成せよ.ただし,べき乗を計算するユーザ関数 int power(int a,int b) を定義し,関数の再帰的呼び出しを使用すること.なお,b >= 0 とみなし,bが負の値のときは「ここでは扱いません」と表示するようにすること.関数 power() の中で途中の計算も表示するようにすること.  作成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,aの値として「学生番号下1桁 + 3 」 の値を入力し,bの値として「(学生番号下2桁を5で割った余り) + 1」の値を入力したときの結果を[実行結果]の次に貼り付けなさい. 実行結果例 :   (学生番号 0234789 の場合) ( aは a= 9+3= 12 , b は b 整数aを入力して下さい:12 整数bを入力して下さい:5 power(12,0)= 1 power(12,1)= 12 power(12,2)= 144 power(12,3)= 1728 power(12,4)= 20736 power(12,5)= 248832 12の5乗は 248832 です 課題2: キーボードから英字の氏名を「名前_苗字」の順でアンダーバー( 「_ 」の文字) で区切って入力し,その文字列を文字コード順に並び替え,さらにそれについてバイナリサーチを実行して「i」の文字を探すプログラムを作成しなさい.並び替えた文字列およびその中の何番目に「i」が見つかったのかを表示するようにせよ.見つからなかった場合は「見つかりませんでした」と表示するようにせよ.実行結果例を参考にすること. プログラムを作成したら,入力値を色々変えて何回か実行し,プログラムが正しく動作することを確認しなさい.確認が済み次第,作成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,各自の名前と苗字を入力したときの実行結果を[実行結果]の次に貼り付けなさい 実行結果例 :   (氏名: 工大 太郎 の場合) 名前と苗字をアンダーバーで区切って入力してください(各先頭文字は大文字) Kodai_Taro 並び替え後 KT_aadioor i を探します lo=0 x[4]=a hi=9 lo=5 x[7]=o hi=9 lo=5 x[5]=d hi=6 lo=6 x[6]=i hi=6 i は 6番目にありました 課題3: 5桁の正の整数をキーボードより入力し、その各桁の値を降順(大→小の順)に並び換えてそれらを順番に表示するプログラムを作成しなさい.以下の手順に従うこと. (1) int 型のサイズ5の配列 A を用意する. (2) 5桁の正の整数をキーボードより入力し,その各桁の値が一桁目から順番に A の各要素に入るようにする (例:値が12345 のとき, A[0]=5, A[1]=4, A[2]=3, A[3]=2, A[4]=1 となるようにする) (3) Aのデータを選択ソートにより降順に並び替える (2)では繰り返し処理を行なうこととし,for 文を用いること. (ヒント: たとえば 12345 の3桁目を取り出したいとき,まずその数を100 で割る.int 型同士の割り算の場合,小数点以下が切り捨てられるので 123 となる.それを10で割った余りを求めれば 3 が得られる.同様に,4桁目を取り出したいときは,1000 で割った整数値の10で割った余りを求めればよい) (3)は演習(3) で作成したプログラムを参考にすること プログラムを作成したら,入力値を色々変えて何回か実行し,プログラムが正しく動作することを確認しなさい.それが済み次第,完成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,各自の学生番号下5桁の値を入力したときの実行結果を[実行結果]の次に貼り付けなさい. 実行結果例 学生番号0114583の場合  5桁の正の整数値を入力してください 14583 ソート前 3 8 5 4 1 i=0 8 3 5 4 1 i=1 8 5 3 4 1 i=2 8 5 4 3 1 i=3 8 5 4 3 1 ソート後 8 5 4 3 1 課題4: 以下の内容を実行するプログラムを作成しなさい.ただしMには「(各自の学生番号下3桁を5で割った余り)+5」を用いよ.また,Nには「(各自の学生番号下2桁を3で割った余り)+2」 を用いよ.作成したプログラムを以下の [プログラム] の次の行に貼り付けること.また実行結果を[実行結果]の次の行に貼り付けなさい.入力値は,学生番号の一桁目から順に入力し,さらに必要ならば「9,8,7」の順に入力せよ.以下の実行の概念図も参考にすること 実行内容 int 型のサイズ M の一次元配列 x があり,キーボードから値を入力してその配列の各要素に代入する.それらの値を N 個ずつ右にずらしてローテーションする 実行結果例 (学生番号 0123457 の場合) M= (457 を 5で割った余り)+ 5 = 2+5 = 7 N= ( 57 を 3で割った余り)+ 2 = 0+2 = 2      よって,サイズ7の配列のデータを      右に2個ずつローテーション (0) 整数を入力してください 7 (1) 整数を入力してください 5 (2) 整数を入力してください 4 (3) 整数を入力してください 3 (4) 整数を入力してください 2 (5) 整数を入力してください 1 (6) 整数を入力してください 0 ローテーション前 7 5 4 3 2 1 0 ローテーション後 1 0 7 5 4 3 2 課題5: キーボードから文字列を入力し,その文字列の2番目の空白の次の文字以降を表示するプログラムを作成しなさい.ただし,文字列の入力には関数 gets を用いること. また,文字列のアクセスにはポインタを用い,関数 putchar を用いて一文字づつ表示させるようにすること. 実行結果は,学生番号,名前(英語),苗字(英語) をそれぞれスペースで区切って入力したときの結果を表示すること 実行結果例 : 学生番号0112345 氏名 田中健 の場合 文字列を入力してください。 0112345 Ken Tanaka 2番目の空白以降を出力します Tanaka windows vista visual studioでのプログマミングの作成を多いと思いますがとても困っていますのでなにとぞお願いします。

  • 至急!助けて下さい。プログラミングJava

    明日までの大学の課題が、わかりません。 どなたか教えてください。書き方が、わかりません。言語はJavaです。 よろしくお願い申し上げます。 1.条件分岐 整数d,xをキーボードから入力させ、 dとzの差の大きさ(絶対値)を計算し、結果を表示するプログラムを作りなさい。 2.繰り返し 整数qcをキーボードから入力させ、1からqcまでの整数を全て表示させるプログラムを作りなさい 3.式 式y=xの二乗+6x+10の値を、x=13から21まで、一つづつ変化させた時のyの値を表示しなさい。 4.和 1から58までの和1+2+3+….+58をプログラムを作って求めなさい。 5.乱数 乱数関数rnd()を使って、変数wgに0~383までの適当な数値を代入し、その結果を出力しなさい。 6.円を描く for文を使って、適当な位置に半径17の赤い円を、87個だけ描きなさい。 7.余り 変数qeに整数を入力させ、その変数qeが6で割り切れたら「割り切れる」と表示し、それ以外は「割り切れない」と表示するプログラムを作りなさい。 *ヒント %演算子で割った余りが求められる。 例えば、5%3は2となる。 8.break文 変数bjに0から1000までの乱数を作っては代入することを繰り返し、bjの値が900以上になったら繰り返しを止めて、bjの値を出力するプログラムを作りなさい。 9.カウント 1から1076までの整数の中で、8で割り切れる数がいくつあるかカウントしてその数を表示しなさい。 以上です。 どうかお助け下さいm(__)m

  • プログラミング分からないので教えてください

    【演習1】 コマンド引数で台形の上底、下底、及び高さを指定して実行すると、台形の面積を算出し表示するプログラムを作成せよ。ただし、以下の条件を満たすこと。 条件: (1)コマンド引数が不足していた場合は<実行例(2)>のようにエラーメッセージを表示する。 (2)上底、下底、高さ、及び面積は実数値として処理する。 (3)台形の上底、下底、及び高さを引数として受け取って面積を算出するユーザー関数を作成し使用する。 (4)面積の表示はmain関数で行い、<実行例(1)>のように表示する。 そのとき、上底、下底、高さは小数点以下2桁、面積は小数点以下3桁で表示する。 <実行例(1)> Z:\>ee1001 3.5 4.2 8.37↓ 上底3.50,下底4.20,高さ8.37の台形の面積は32.224 <実行例(2)> Z:\>ee1001 3.5 4.2↓ 引数が足りません。 【演習2】 点数を3つキー入力すると、3つの点数の合計点と平均点を表示するプログラムを作成せよ。ただし、以下の条件を満たすこと。 条件: (1)点数は整数で入力する。。 (2)入力された3つの点数のうち1つでも0未満だった場合は、<実行例(3)>のようにエラーメッセージを表示する。 (3)3つの点数を受け取って、3つの点数の合計点と平均点を算出するユーザー関数を作成し使用する。また、合計点は整数、平均点は実数で算出する。 (4)合計点と平均点の表示はmain関数で行い、<実行例(1)(2)>のように表示する。 そのとき、合計点は全4桁、平均点は全6桁小数点以下1桁で表示する。 <実行例(1)> 点数: 80↓ 点数: 65↓ 点数: 98↓ 合計点 243 平均点 81.0 <例実行(2)> 点数: 80↓ 点数: -1↓ 点数: 98↓ 点数は0以上で入力してください よろしくお願いします

  • プログラミングの乱数

    c言語、c++の乱数rand()の使い方がよくわかりません。わかりやすい説明をお願いします。 あと、プログラミングが得意な方にお願いです。 [0,1]乱数で平均と分散を求めるプログラムを配列なしで作ってください。

  • プログラミングに関して

    『Rnd関数を用いて12個の一様乱数の合計値を400回求めて、Sheet1のA1セルからJ40セルまでの範囲のセルに順番にその合計値を書き込むSubプロシージャ「Kadai1A」を作成せよ。』という問題に歯が立ちません。わかる方いらっしゃいましたら回答お願いします。