mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 05:52:22 -04:00
Increase randomness in random sorting of new cards (#4286)
* Increase randomness in random sorting of new cards Currently, the new cards appear roughly in the same order on consecutive days (if they are skipped by burying). This change aims to increase randomness by spreading out the salt across the hash space. * Fix errors
This commit is contained in:
parent
3b33d20849
commit
6dd9daf074
1 changed files with 16 additions and 12 deletions
|
@ -61,28 +61,26 @@ impl QueueBuilder {
|
|||
}
|
||||
|
||||
fn gather_new_cards(&mut self, col: &mut Collection) -> Result<()> {
|
||||
let salt = Self::knuth_salt(self.context.timing.days_elapsed);
|
||||
match self.context.sort_options.new_gather_priority {
|
||||
NewCardGatherPriority::Deck => {
|
||||
self.gather_new_cards_by_deck(col, NewCardSorting::LowestPosition)
|
||||
}
|
||||
NewCardGatherPriority::DeckThenRandomNotes => self.gather_new_cards_by_deck(
|
||||
col,
|
||||
NewCardSorting::RandomNotes(self.context.timing.days_elapsed),
|
||||
),
|
||||
NewCardGatherPriority::DeckThenRandomNotes => {
|
||||
self.gather_new_cards_by_deck(col, NewCardSorting::RandomNotes(salt))
|
||||
}
|
||||
NewCardGatherPriority::LowestPosition => {
|
||||
self.gather_new_cards_sorted(col, NewCardSorting::LowestPosition)
|
||||
}
|
||||
NewCardGatherPriority::HighestPosition => {
|
||||
self.gather_new_cards_sorted(col, NewCardSorting::HighestPosition)
|
||||
}
|
||||
NewCardGatherPriority::RandomNotes => self.gather_new_cards_sorted(
|
||||
col,
|
||||
NewCardSorting::RandomNotes(self.context.timing.days_elapsed),
|
||||
),
|
||||
NewCardGatherPriority::RandomCards => self.gather_new_cards_sorted(
|
||||
col,
|
||||
NewCardSorting::RandomCards(self.context.timing.days_elapsed),
|
||||
),
|
||||
NewCardGatherPriority::RandomNotes => {
|
||||
self.gather_new_cards_sorted(col, NewCardSorting::RandomNotes(salt))
|
||||
}
|
||||
NewCardGatherPriority::RandomCards => {
|
||||
self.gather_new_cards_sorted(col, NewCardSorting::RandomCards(salt))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -169,4 +167,10 @@ impl QueueBuilder {
|
|||
true
|
||||
}
|
||||
}
|
||||
|
||||
// Generates a salt for use with fnvhash. Useful to increase randomness
|
||||
// when the base salt is a small integer.
|
||||
fn knuth_salt(base_salt: u32) -> u32 {
|
||||
base_salt.wrapping_mul(2654435761)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue