• ベストアンサー

数字の挿入方法に関しまして

以下のように、 C++で、 変数の値を、 既存の数字列に挿入したいときって、 どんな関数を使うのでしょうか? ======================= srand((unsigned)time(0)); int n = rand()% 109999; ======================= 「ABCDEFG」 という数字列の先頭に、 上記rand()で作った整数の値を挿入したいと思っています。 そして、 「挿入した整数」+「ABCDEFG 」 としたい感じです。 調べ方が悪いのか適切なものを探せませんでした。 簡単な内容でしたらすいません。 宜しくお願い致します。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8524/19373)
回答No.2

char buf[256]; char numstr[] = "1357902468"; srand((unsigned)time(0)); int n = rand()% 109999; sprintf(buf,"%d%s",n,numstr);

mami_try
質問者

お礼

ようやく意味が分かりました! 最初に教えていただいた内容で、 最終的な意図も満たせました。 ありがとうございます!

mami_try
質問者

補足

分かりやすくご案内いただきありがとうござました! 引き続き質問してしまいすいません。 もし宜しければ、アドバイスいただけると嬉しいです。 今回、整数の挿入をしましたが、 その後も次々と、 key = "ABCDEFG"にrand関数で得た異なる値を 追加していきたいと思っています。 key = "ABCDEFG"; srand((unsigned)time(0)); int n = rand()% 109999; ======================= key = 「nの値」+ keyの値 ======================= を実現させ、 実現後、 その後ここで、最初に得た「n」の値のみeraseしてしまい 改めて、 ======================= key = 「新たに作成したnの値」+ keyの値 ======================= というプログラムにしたいと思っています。 繰り返しの部分は、 forで繰りか返す予定でいるのですが、 keyの値にrand関数で得た値を追加するときは、 配列でいうところの、 「list」のメンバ関数にある「push_front」みたいな、 先頭に追加挿入するための関数などはあるのでしょうか?

その他の回答 (1)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

sprintf(buf,"%dABCDEFG",n);

mami_try
質問者

お礼

教えていただきありがとうございました! 意味が分かりました! ありがとうございます!

関連するQ&A

  • 型変換??

    int RANDOM_FUNCTION( int n ) { return (int)( rand() / (float)RAND_MAX * n ); } について Q1.この関数は0からn-1までの乱数を作るそうなのですが,何故ですか? 0<=rand()<=RAND_MAX だから0からnまでの乱数ができるような気がするのですが. Q2.RAND_MAXではなく(float)RAND_MAXとキャストしてある意味は何ですか? Q3.srand((unsigned)time(NULL));と srand((unsigned int)time(NULL));では何か違いますか? Q4.  static int first = 0; if (first == 0){ srand((unsigned)time(NULL)); first = 1; } という処理でsrand((unsigned)time(NULL));は最初の一回だけ呼び出されるようになっているようですが,この部分を srand((unsigned)time(NULL)); というように毎回呼び出すようにするとどうなりますか? 一回呼び出すだけで乱数系列の初期値が呼び出される時に変化しているのですか? Q5.この関数とは関係ない質問ですが,例えば a:int型 b:int型 c:double型 d:float型 のとき d = a / b + c という演算は 1 a:int型,b:int型より(a / b)の結果はint型(小数になった場合は小数点以下切り捨て) 2 (a / b):int型,c:double型,int<doubleより (a / b + c)の結果はdouble型 3 d:float型,『=のあるときは左辺の型に合わせる』よりdはfloat型 というように型変換されているという解釈でいいのでしょうか??

  • 乱数で交互に偶数、奇数が、、、。

    C言語で、確率2分の1で0と1を 出そうとして、rand,srand,timeを使って やってみたのですが、ちょうど、0と1が 交互に出てしまいます。何度やっても 変わりません。ただ、1と0が逆になる だけ。こんな感じで0101010101か1010101010 つまり、乱数で奇数と偶数が 交互に発生しているみたいうまくいきません。 なにか、別の方法ありますか? --------------------------------------- srand((unsigned int)time(NULL)); s=rand()%2 これで、やってます。

  • 乱数について

    Visual Studio2008を使っています。 #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ int i; srand(time(NULL)); i=rand(); printf("%d\n",i); return 0; } 乱数を作るために上のようなプログラミングを作りました。 これを「ソリューションのビルド」すると 【warning C4244: '引数' : 'time_t' から 'unsigned int' への変換です。データが失われる可能性があります。】 と出ます。 このまま行っても乱数が出来るのですが どうしたらいいのでしょうか? 8行目を srand(time_t(NULL)); srand((unsigned)time(NULL)); と変えればいいのでしょうか? time_tでやると乱数が同じ値しか出てきません。 教えてください。

  • 乱数の取得

    キー操作をした時に複数の乱数を習得させようと思っています。 【キ─操作関数】  int num[3] = {11, 22, 33}; ←初期化のため数字は適当です。  srand((unsigned int)time(NULL))  for(int i=0; i<=3; i++)  {   num[i] = rand % 10;  } 上記のプログラムを書いています。 num[0]、num[1]、num[2]にそれぞれ0~9の乱数が入ると思うのですが、 num[0]にしか乱数が入りません。 num[1]、num[2]には同じ数字(恐らくtimeで取得した数字?)が入っています。 何かお気づきの点がありましたらアドバイスお願い致します。

  • 数字を当てさせるゲームについて

    #include<stdio.h> #include<time.h> #include<stdlib.h> int main(void) { int limit=0; int no; /*当てさせる値*/ int num; /*入力する値*/ int max=9; srand(time(NULL)); no=rand()%1000; do{ printf("あと%d回入力できます。数字を入力してください。\n",max-limit); scanf("%d",&num); limit++; if(num>no) { printf("大きいです。\n"); } else if(num<no) { printf("小さいです。\n"); } }while(num!=no || limit<max) if(num==no) { printf("正解です。"); printf("%d回で当たりました。",limit); } else { printf("残念ながら不正解です。") } return 0; } これは、0以上999以下の整数を入力させて9回以内にランダムで 入力した値を当てさせるゲームです。 質問内容としては 当てさせる数字を「0以上999以下の数字」→「0以上999以下の3の倍数」に変更するにはどうすればよいかです。 よろしくお願いいたします。

  • 乱数について・・・

    (1)1,2,3,4の整数のどれかを乱数で発生させる方法 (2)0~1までの実数を発生させる方法 を教えていただけないでしょうか?(a.outするたびに値が変わってほしいです。) ※一応、下のプログラムにあるように実行するたびに違う乱数がanswerに入るようにはできたのですが、いまいち理解できていません。軽い説明や参考URLなども教えてもらえたら助かります。 よろしくお願いします。 #include<time.h> int main() { unsigned short time_a,time_b; unsigned long answer; time_a = time(NULL); time_b = time_a; srand(time_b); answer = rand(); printf("答えは = %d\n",answer); }

  • rand()に関して

    srand((unsigned) time(NULL)); for(~~~){    ~~~rand()~~ } と使って順番に1か0を出していくプログラムを書いてるんですが いつも最初の部分が1になっていてデバッグして調べてみたら 同じではないのですが毎回似たような数字を出していました。 26392 26535 26682 26784 このようなかんじです。 (4回デバッガを使って1番最初に呼び出されたrand()の返した値を調べました) rand()とはそういうものなのでしょうか? それとも何か原因があるんでしょうか。 2回目以降は一見大丈夫そうなのでただ rand(); と呼び出す無駄な行を書いてやりすごしたのですが、 もしこれが普通の現象であったら一般的な対策方法が知りたいです。

  • 乱数の最大値

    C言語で0~Nまでの乱数を発生させる場合、 srand((unsigned) time(NULL)); rand()%N; とやりますよね。 このやり方だと、発生する乱数はRAND_MAX以下しかできません。 RAND_MAX以上の値を発生させるにはどうすればいいのでしょうか?

  • C言語でサイコロのプログラムを作ってみたのですが

    まず、以下のような”実行するたびに1~6の数字をランダムに出力するプログラム”を 作ってみたのですが、特定の数字が出てこないのです。 例えば、1と4、2と5、3と6 が出ない ここで気がついた事は、 1、出ない目の2数の差は3であること。 2、乱数自体を表示させたところ、ちゃんと1秒毎に乱数は変わっている。こちらには問題はない 3、約1分間隔で、出ない数字の組み合わせが変わる。 (例えば 1,3,4,6,1,6,3,6,4(2と5が出ない)  →1分間実行し続けると・・・  2,3,6,5,3,2,2,6(1と4が出ない)) この原因は一体なんなのでしょうか・・・ とても気になって仕方がありません。わかる方教えてください。 以下、ソースコードになります #include<stdio.h> #include<time.h> #include<stdlib.h> int func(void); int main(void){ int number=0; number=func(); //サイコロの目の表示 printf("%d\n",number); return 0; } int func(){ //乱数の初期化 srand((int unsigned)time(NULL)); //サイコロの目をランダムで出力し、返す return rand()%6+1; } プログラムの仕組みは パソコンから現在の歴時刻を元に乱数の初期値を変更 ↓ rand関数で適当な値を受け取り、6で割った余剰+1を計算し値を返却する

  • C言語/ランダムbeepのプログラム方法

    プログラムを書いていますが理解に苦しんでいます。 勉強し始めたばかりなのでかなりハードです。どなたか助けていただけませんか。 前に進めずにいます。 何をしたいかというと、マッチングゲームの中の一部でランダムなビープサウンドにあわせて反応して答えを返すというものです。答えられなければ点数がマイナスになります。 まず、数字をランダムに1から10の間で生成し、出た数字がある特定の数字だとビープサウンドが流れるという仕組みを考えたのですがどうでしょうか。 本当に切羽詰っています。助けてください。 // rand.cpp : Defines the entry point for the console application. // #include <stdafx.h> #include <stdlib.h> /*This header is for rand srand code)*/ int main (void) { unsigned int seed; int i,run=0; printf("Choose a level of difficulty"); scanf("%d", &seed); /*&seed is for "unsigned" int*/ printf("\n"); srand(seed); /*generate a number 0-10*/ i=1+(int) (10.0*rand()/(RAND_MAX+1.0)); /*if a number is 1, beep sound comes out*/ if(i==1) for(int j=0; j<i; j++) printf("\a"); return 0; }

専門家に質問してみよう