| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/knowledge/knowledge_get_random_target.c')
| -rw-r--r-- | src/knowledge/knowledge_get_random_target.c | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/src/knowledge/knowledge_get_random_target.c b/src/knowledge/knowledge_get_random_target.c index d5f321d..1e878cf 100644 --- a/src/knowledge/knowledge_get_random_target.c +++ b/src/knowledge/knowledge_get_random_target.c @@ -48,14 +48,17 @@ static int weighted_random_pick int JH_knowledge_random_tws_target ( - const struct JH_knowledge k [const static 1], + struct JH_knowledge k [const static 1], JH_index target [const restrict static 1], const JH_index word_id, - const JH_index sequence_id + const JH_index sequence_id, + FILE io [const restrict static 1] ) { JH_index s_index; + JH_knowledge_readlock_word(k, word_id, io); + if ( JH_knowledge_find_markov_sequence @@ -66,27 +69,46 @@ int JH_knowledge_random_tws_target ) < 0 ) { + JH_knowledge_readunlock_word(k, word_id, io); + return -1; } - return + if + ( weighted_random_pick ( &(k->words[word_id].tws.sequences_ref[s_index]), target - ); + ) + < 0 + ) + { + JH_knowledge_readunlock_word(k, word_id, io); + + return -1; + } + else + { + JH_knowledge_readunlock_word(k, word_id, io); + + return 0; + } } int JH_knowledge_random_swt_target ( - const struct JH_knowledge k [const static 1], + struct JH_knowledge k [const static 1], const JH_index sequence_id, const JH_index word_id, - JH_index target [const restrict static 1] + JH_index target [const restrict static 1], + FILE io [const restrict static 1] ) { JH_index s_index; + JH_knowledge_readlock_word(k, word_id, io); + if ( JH_knowledge_find_markov_sequence @@ -97,13 +119,29 @@ int JH_knowledge_random_swt_target ) < 0 ) { + JH_knowledge_readunlock_word(k, word_id, io); + return -1; } - return + if + ( weighted_random_pick ( &(k->words[word_id].swt.sequences_ref[s_index]), target - ); + ) + < 0 + ) + { + JH_knowledge_readunlock_word(k, word_id, io); + + return -1; + } + else + { + JH_knowledge_readunlock_word(k, word_id, io); + + return 0; + } } |


