diff options
-rw-r--r-- | kgramstats.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/kgramstats.cpp b/kgramstats.cpp index e6048d9..ac694f3 100644 --- a/kgramstats.cpp +++ b/kgramstats.cpp | |||
@@ -437,9 +437,9 @@ std::string kgramstats::randomSentence(int n) | |||
437 | { | 437 | { |
438 | if (rand() % (maxK - cur.size() + 1) == 0) | 438 | if (rand() % (maxK - cur.size() + 1) == 0) |
439 | { | 439 | { |
440 | while (cur.size() > 2) | 440 | while ((cur.size() > 2) && (cuts > 0)) |
441 | { | 441 | { |
442 | if ((rand() % (n)) < cuts) | 442 | if ((rand() % cuts) > 2) |
443 | { | 443 | { |
444 | cur.pop_front(); | 444 | cur.pop_front(); |
445 | cuts--; | 445 | cuts--; |
@@ -448,8 +448,6 @@ std::string kgramstats::randomSentence(int n) | |||
448 | } | 448 | } |
449 | } | 449 | } |
450 | } | 450 | } |
451 | |||
452 | cuts++; | ||
453 | } | 451 | } |
454 | 452 | ||
455 | // Gotta circumvent the last line of the input corpus | 453 | // Gotta circumvent the last line of the input corpus |
@@ -556,6 +554,12 @@ std::string kgramstats::randomSentence(int n) | |||
556 | { | 554 | { |
557 | nextToken.append(","); | 555 | nextToken.append(","); |
558 | } | 556 | } |
557 | |||
558 | // If this pick was guaranteed, increase cut chance | ||
559 | if (next.all == max) | ||
560 | { | ||
561 | cuts++; | ||
562 | } | ||
559 | 563 | ||
560 | /* DEBUG */ | 564 | /* DEBUG */ |
561 | printKgram(cur); | 565 | printKgram(cur); |