Daftar dan Belajar Sekarang!

Membuat Kode Random

foto HabibulUmam
50 Kontribusi 9 Coto
2 bulan yang lalu
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");

}

Tag: c

✔ Forum ini sudah terjawab


Jawaban
foto DennyKurniawan
61 Kontribusi 21 Coto
2 bulan yang lalu
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.
#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 < 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 < 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 < 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!
}
answered icon
foto DennyKurniawan
61 Kontribusi 21 Coto
2 bulan yang lalu
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.
#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 < 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 < 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 < 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!
}

Login untuk tulis komentar


foto HabibulUmam
50 Kontribusi 9 Coto
2 bulan yang lalu
eh,, rand_numb[count_data] = {0} itu gimana ya ?

foto DennyKurniawan
61 Kontribusi 21 Coto
2 bulan yang lalu
Itu maksudnya semua arraynya diisi angka 0 dulu, waktu inisiasinya jadi sama seperti
int rand_numb[count_data] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };


Login untuk diksusi di forum sekolah koding