1

I'm trying to make a program that asks me random words' translations based on a custom dictionary (an XML file). An XML entry consists of "English", "Spanish", "Appearance" and "CorrectGuesses" sections.

I created a class called "Word" and the class holds the words' translations and the ratios representing how much I know those words. The simplified version of the code:

class Word
{
    public string english;
    public string spanish;

    private int appearance;
    private int correctGuesses;

    private float ratio;

    // The constructor takes the translation and the numbers, and calculates the ratio
    public Word(...

    public void Appeared(bool guessedCorrectly)
    {
        if (guessedCorrectly)
        {
            ++correctGuesses;
        }

        ++appearance;

        ratio = (float)correctGuesses / appearance;
    }
}

I want to select a random word depending on the ratios of the all words, which means selecting randomly between the words that have low ratios. So, I can focus on the words that I know less. Is there any algorithm I can use for my need? Or what kind of logic should I make and which data type should I use?

  • Does this answer your question? [Random weighted choice](https://stackoverflow.com/questions/56692/random-weighted-choice) – Peter O. Dec 26 '21 at 16:07
  • See also: https://stackoverflow.com/questions/5027757/what-are-efficient-data-structures-and-algorithms-for-simulating-loaded-dice – Peter O. Dec 26 '21 at 16:07

0 Answers0