2016-04-11 23 views
3

Üç tarafından bölünebilir rastgele bir sayı oluşturmak için rand(1..10) * 3 kullanıyorum.x ile bölünemez rastgele bir sayı üretin?

NOT NOT: Rastgele bir sayı üretmenin basit bir yolu var mı, yoksa bir diziden örnek almak zorunda kalmadan üç (veya başka bir numara) tarafından bölünebilir mi?

+0

en kolay yolu, kontrol etmektir. Sözde kod: 'while ((x = generate_random% 3)! = 0)' –

cevap

8
k = rand(0..1000) 
out = k + k/2 + 1 # The '/' here is integer division. 

0 -> 1 
1 -> 2 
2 -> 4 
3 -> 5 
4 -> 7 
5 -> 8 
6 -> 10 
... 
+2

Bir döngü kullanmaktan çok daha iyi, +1. –

+0

Bu, bir int tarafından bölünen bir int, bir float olarak ifade edilmediği için mümkündür. Bu sadece "3 ile" durumunu ele alır, ancak aynı prensip keyfi sayıları tekrarlayabilir. – tadman

+0

Herhangi bir "N> 1" için bu cevabı tamamlamak için (matematik sembolleri kullanıyorum, çok iyi ruby ​​bilmiyorum): 'out = ⌊ (k-1) * N/(N-1) ⌋ + 1'. ('k-1'' k' ile değiştirilebilir, eğer '1' için' k' = 0'' olacak şekilde tamamlanırsa (k <0 için çalışmaz). – 12431234123412341234123

1

Böyle bir şey olabilir mi? üretilen numara modülo 3 0, ve eğer öyleyse yeniden oluşturmak,

y = 3 
x = nil 
loop { break if (x=rand(1..10))%y !=0 } 
1
int getNumberNotDivisibleBy9() 
{ 
    srand(time(NULL)); 
    int randm; 
    randm = rand(); 
    while (randm % 9 == 0) 
     randm = rand(); 
    return randm; 
} 
İlgili konular