C言語なら俺に聞け(入門編)Part 78at TECH
C言語なら俺に聞け(入門編)Part 78 - 暇つぶし2ch415:デフォルトの名無しさん
11/02/11 04:04:05
>>394はこう書けばいいのかな
for(i = 0; i < 10; i++) {
j = rand() % (i + 1);
if(j != i) num[i] = num[j];
num[j] = i + 1;
}

最初にnum[10] = {0};ってやったほうが楽そうだ

416:デフォルトの名無しさん
11/02/11 04:05:42
>>415
条件分岐で処理速度が落ちるから小手先テクの意味ないじゃん

417:デフォルトの名無しさん
11/02/11 04:10:25
カキコしているランダムに並べ替えは、
限られた範囲の数値が10から20や、-20から-10や、-10から10
てかみたいに、intで表せる任意の(連続)範囲ならどこでもOKなの?

418:デフォルトの名無しさん
11/02/11 04:12:31
>>415
やるなら、こんな感じ。

for(i = 0; i < 10; i++) {
j = rand() % (i + 1);
num[i] = 0;
num[i] = num[j];
num[j] = i + 1;
}

でも、可読性が悪いため、他の人に
「num[i] = 0;」を消されるかも知れないので、お勧めできない。


419:デフォルトの名無しさん
11/02/11 04:13:36
>>414
おい、おまえ、限られた範囲の数値をランダムに並べ替えやってみそ


420:デフォルトの名無しさん
11/02/11 04:14:45
394 :デフォルトの名無しさん:2011/02/11(金) 00:48:34
>>392
for(i = 0; i < 10; i++) {
j = rand() % (i + 1);
num[i] = num[j];
num[j] = i + 1;
}
ってやれば空の配列に数字を入れながらランダムにできる

421:デフォルトの名無しさん
11/02/11 04:15:10
>>417
>>391ならOK

422:デフォルトの名無しさん
11/02/11 04:15:32
空の配列って書いてあるからもしかしたら、0で初期化してあるのかもしれないw

423:デフォルトの名無しさん
11/02/11 04:17:56
J.2 Undefined behavior
1 The behavior is undefined in the following circumstances:
The value of an object with automatic storage duration is used while it is
indeterminate (6.2.4, 6.7.8, 6.8).

424:デフォルトの名無しさん
11/02/11 04:20:06
行列演算ならまだしもただの並び替えなら、俺は読みやすい方を採用するかな

425:デフォルトの名無しさん
11/02/11 04:33:05
>>410
比較演算の結果は0か1になることが保障されてるって突っ込みが抜けてるから
「i * 10 + 9 + ( i == 9 ) は意図したとおりに動かないね。」が正しいように見えるわな

426:デフォルトの名無しさん
11/02/11 04:33:12
ここで再登場して、変数を宣言と同時に0で初期化しないアホがいるなんてwとか言ってくれたら面白いのに

427:デフォルトの名無しさん
11/02/11 04:37:33
>>425
そこは923で丁寧に説明されてるからおk

428:デフォルトの名無しさん
11/02/11 04:37:35
num[]はグローバル変数ですよ。
初期化する必要なんてありません。

429:デフォルトの名無しさん
11/02/11 04:44:13
Javaの質問ですけどいいですか?

430:デフォルトの名無しさん
11/02/11 04:44:14
◆QZaw55cn4cはこれだけ住人に嫌われているのにのうのうと平気な顔で
出てこれる神経が分からん
アスペも混ざってるな

431:デフォルトの名無しさん
11/02/11 04:47:51
>>429
お前さんスゲーナ

432:デフォルトの名無しさん
11/02/11 04:50:57
小型数列なら配置用の配列を使うかな
static int sr[3][10]={{9,2,5,…}.{4,9,7,…},{0,5,4,…}};
#define F(a,b,c) (b[0]=a[0], b[1]=a[1],…,c=&sr[rand()%3],a[0]=b[*c[0]],…, a[9]=b[*c[9]],a)

int num[10]={0,1,…},tmp[10],(*mxr)[10];
F(num,tmp,mxr);

433:デフォルトの名無しさん
11/02/11 04:56:19
>>432
マクロ長すぎ
素直に関数にして下さい

434:デフォルトの名無しさん
11/02/11 05:07:50
>>432
最高にキモイな!うほ!

435:デフォルトの名無しさん
11/02/11 05:57:44
「鬼は捕らえた娘をイヤーぶちぬいたんあぁ」ってなんですか


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch