Postingan lainnya
Membuat Kode Random
Jadi gini, saya mau buat angka (random) untuk dibuat sebagai pengganti kopyokan (anggep aja dadu) dengan bahasa c. idenya, setiap anak dikelas bisa mendapatkan nomor acak yang berbeda - beda dalam 1 kali (kopyokan/lempar dadu) yang bernilai 18. tapi masalah nya, saya nggak bisa merealisasikannya. saya cari tau di gugel , saya coba ini itu masih gak bisa. bisa sih, tapi angka nya ada yang mengulang. misal:
saat saya menjalankan kode yang saya buat, saya akan mendapatkan beberapa angka random:
17, 3, 5, 3, 12, 7, 22, 2, 1, 10, 21, 11, 24, 30, 36, 21, 2, 1,
pada hasil diatas kan ada beberapa angka yang sama, 3;
saya cari di gugel mentok, dan saya tanyakan di forum ini. harap bantuannya.
ini kode saya :
//random milih ukk
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int acak;
int angka;
int main()
{
printf("=============================\n");
printf("Random Pemilihan Paket UKK!!!\n");
printf("=============================\n");
//paket 1 & 2 @max 18
srand(time(0));
printf("yang dapat paket 1\n");
for(int i=1; i<=18; i++){
angka = rand()%36 + 1;
if( acak != angka ){
printf("%d, ",acak);
}
acak = angka;
}
printf("\n=============================\n");
printf("===========Selesai===========\n");
printf("=============================\n");
}
3 Jawaban:
Jawaban Terpilih
Itu karena kamu ngecekya cuma antara dua variabel angka sebelum yang kamu generate makanya kembar, disimpan dulu kearray terus dicek. Kalo masih kurang jelas, tanyakan komentar dibawah ya. <pre> #include<stdio.h> #include<stdlib.h> #include<time.h>
int main() { const int count_data = 18; // jumlah data, untuk memudahkan jika jumlahnya mau diubah int rand_numb[count_data] = { 0 }; // inisiasi array untuk menyimpan data, isi semua dengan 0
printf("=============================\n");
printf("Random Pemilihan Paket UKK!!!\n");
printf("=============================\n");
//paket 1 & 2 @max 18
srand(time(0));
printf("yang dapat paket 1\n");
for (int i = 0; i &lt; count_data; i++) {
int single_rand = 0;
bool exist; // kondisi untuk pengulangan
do {
exist = false;
single_rand = rand() % 36 + 1;
for (int j = 0; j &lt; count_data; j++) { // cek apakah data sudah ada
if (rand_numb[j] == single_rand) {
exist = true; // data eksis, break loop generate number baru
break;
}
}
} while (exist); // ulangi jika eksis true
rand_numb[i] = single_rand; // masukkan ke array jika data belum eksis
}
for (int i = 0; i &lt; count_data; i++) { // tampilkan semua data
printf("%d ", rand_numb[i]);
}
printf("\n=============================\n");
printf("===========Selesai===========\n");
printf("=============================\n");
system("pause"); // biar console nggak close
return 0; // int main jangan lupa return 0!
} </pre>
Tanggapan
mantappp,,, makasih bantuannya.
eh,, rand_numb[count_data] = {0} itu gimana ya ?
Itu maksudnya semua arraynya diisi angka 0 dulu, waktu inisiasinya jadi sama seperti <pre> int rand_numb[count_data] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; </pre>