2009-09-29 8 views
2

fondamentalement j'ai une fonction qui génère des alphabets aléatoires .je l'ai fait en utilisant la fonction rand() pour générer des nombres et les a convertis en leur équivalents ascii correspondants. mais je veux que les voyelles soient générées en plus grand nombre par rapport aux autres alphabets.ie si ont généré disons 10 alphabets alors il devrait y avoir comme 2 o, 3 a etc. comment puis-je faire ceci dans vC++ 6.0.générer des alphabets aléatoires avec certains alphabets ayant une fréquence d'occurrence plus élevée (vC++ 6.0)

Éditer: en fait je fais scrabble comme mon projet d'université dans vC++ 6.0. donc sous mon bord, j'ai 7 boutons sur lesquels je suis une lettre au hasard l'affichage sur each.so ce que je veux est que ..like SCRABBLE nous avons:

1 point: E ×12, A ×9, I ×9, O ×8, N ×6, R ×6, T ×6, L ×4, S ×4, U ×4 
2 points: D ×4, G ×3 
3 points: B ×2, C ×2, M ×2, P ×2 
4 points: F ×2, H ×2, V ×2, W ×2, Y ×2 
5 points: K ×1 
8 points: J ×1, X ×1 
10 points: Q ×1, Z ×1 

donc comme vous choisiriez 7 lettres au hasard de l'ensemble décrit ci-dessus, je veux que les 7 lettres soient générées de la même manière.

+1

alphabet = lettre?alphabet est un ensemble de lettres –

Répondre

0

donnez à chaque valeur un poids. Par exemple. a = 5, b = 5, c = 2, .... q = 1, z = 2 etc

plus le poids, plus souvent que vous voulez que la lettre apparaisse

à calco un hasard lettre, ajouter tous les poids ensemble et choisir un aléatoire entre 0 et le poids total.

puis sélectionnez la lettre qui correspond au numéro tiré:

comme dans l'exemple: si vous avez dessiné 0-4 vous prenez l'un, si vous avez dessiné 5-9 vous prenez b, 10-11 = c etc etc

+0

en fait je fais scrabble comme mon projet d'université en vC++ 6.0. ainsi sous mon conseil j'ai 7 boutons sur lesquels je montre une lettre au hasard sur chacun.so ce que je veux est que ..comme scrabble nous avons .. 1 point: E × 12, A × 9, I × 9 , O × 8, N × 6, R × 6, T × 6, L × 4, S × 4, U × 4 2 points: D × 4, G × 3 3 points: B × 2, C × 2 , M × 2, P × 2 4 points: F × 2, H × 2, V × 2, W × 2, Y × 2 5 points: K × 1 8 points: J × 1, X × 1 10 points: Q × 1, Z × 1 Ainsi, tout comme vous choisiriez 7 lettres aléatoires de l'ensemble décrit ci-dessus, je veux que les 7 lettres soient générées de la même manière. –

0

Une solution triviale consiste à utiliser 2 listes. Une avec les voyelles et une avec les consonnes.
Maintenant, construisez votre nouvel alphabet en sélectionnant N voyelles aléatoires et M consonnes aléatoires où N> M et N + M = taille maximale de l'alphabet.

+0

en fait je fais scrabble comme mon projet d'université en vC++ 6.0. ainsi sous mon conseil j'ai 7 boutons sur lesquels je montre une lettre au hasard sur chacun.so ce que je veux est que ..comme scrabble nous avons .. 1 point: E × 12, A × 9, I × 9 , O × 8, N × 6, R × 6, T × 6, L × 4, S × 4, U × 4 2 points: D × 4, G × 3 3 points: B × 2, C × 2 , M × 2, P × 2 4 points: F × 2, H × 2, V × 2, W × 2, Y × 2 5 points: K × 1 8 points: J × 1, X × 1 10 points: Q × 1, Z × 1 Ainsi, tout comme vous choisiriez 7 lettres aléatoires de l'ensemble décrit ci-dessus, je veux que les 7 lettres soient générées de la même manière. –

1

Vous pouvez ajouter une autre fonction rand. F.e. (Désolé, c'est juste un code pseudo)

if(rand(0,10) >= 5) { 
    //generate here a vowel at random 
} else { 
    //generate a normal letter or a random letter (including vowel) 
} 

Cela va générer des voyelles à une chance de 50/50, vous pouvez changer cette chance en modifiant le 5.

Bobby

+0

en fait je fais scrabble comme mon projet d'université en vC++ 6.0. ainsi sous mon conseil j'ai 7 boutons sur lesquels je montre une lettre au hasard sur chacun.so ce que je veux est que ..comme scrabble nous avons .. 1 point: E × 12, A × 9, I × 9 , O × 8, N × 6, R × 6, T × 6, L × 4, S × 4, U × 4 2 points: D × 4, G × 3 3 points: B × 2, C × 2 , M × 2, P × 2 4 points: F × 2, H × 2, V × 2, W × 2, Y × 2 5 points: K × 1 8 points: J × 1, X × 1 10 points: Q × 1, Z × 1 Ainsi, tout comme vous choisiriez 7 lettres aléatoires de l'ensemble décrit ci-dessus, je veux que les 7 lettres soient générées de la même manière. –

0

Je vais écrire en pseudo-code. Disons que vous avez vos fréquences lettre définies:

freq['a'] = 0.2 
freq['b'] = 0.01 
... 
freq['z'] = 0.02 

Somme de tous les éléments doivent évidemment être 1.

Ensuite, vous pouvez définir un tableau avec des intervalles:

intr['a'] = [0; 0.2) 
intr['b'] = [0.2; 0.01) 
... 
intr['z'] = [0.98; 1) 

Ensuite, lorsque vous générez un nombre aléatoire n dans l'intervalle [0; 1), vous avez juste besoin de courir à travers le tableau intervalle et trouver quelle lettre correspond à cela:

for(letter = 'a' .. 'z') 
    if n in intr[letter] then return letter; 

Le tableau d'intervalle peut également être implémenté en utilisant des nombres entiers pour la vitesse.

+0

en fait je fais scrabble comme mon projet d'université en vC++ 6.0. ainsi sous mon conseil j'ai 7 boutons sur lesquels je montre une lettre au hasard sur chacun.so ce que je veux est que ..comme scrabble nous avons .. 1 point: E × 12, A × 9, I × 9 , O × 8, N × 6, R × 6, T × 6, L × 4, S × 4, U × 4 2 points: D × 4, G × 3 3 points: B × 2, C × 2 , M × 2, P × 2 4 points: F × 2, H × 2, V × 2, W × 2, Y × 2 5 points: K × 1 8 points: J × 1, X × 1 10 points: Q × 1, Z × 1 Ainsi, tout comme vous choisiriez 7 lettres aléatoires de l'ensemble décrit ci-dessus, je veux que les 7 lettres soient générées de la même manière. –

Questions connexes