替换String数组中随机索引的单词百分比

时间:2015-01-07 21:17:42

标签: android arrays string random words

我有一个像

这样的字符串
  

这是一个非常好的句子

我将其分成单独的单词并存储在String[]中:

String[] words = s.split(" ");

如何对单词总数采取特定百分比(比如说6个单词中的2个),并用其他内容替换这2个单词。到目前为止我的代码:

    //Indexes in total
    int maxIndex = words.length;
    //Percentage of total indexes
    double percentageOfIndexes = 0.20;
    //Round the number of indexes
    int NumOfIndexes = (int) Math.ceil( maxIndex * (percentageOfIndexes / 100.0));
    //Get a random number from rounded indexes
    int generatedIndex = random.nextInt(NumOfIndexes);` 

1 个答案:

答案 0 :(得分:0)

首先,计算要替换的单词数:

int totalWordsCount = words.length;

double percentageOfWords = 0.20;

int wordsToReplaceCount = (int) Math.ceil( totalWordsCount * percentageOfWords );

然后,知道要替换多少个单词,获取那么多随机索引,然后只在这些索引处交换单词:

for (int i=0; i<wordsToReplaceCount; i++) {
    int index = random.nextInt(totalWordsCount);

    //and replace
    words[index] = "Other"; // <--- insert new words
}

注意:请记住,单词数越少,您的百分比与要替换的实际单词数之间的差异就越大,例如。 6个单词中的20%是1.2个单词,在Math.ceil()之后变为2,而2个单词从6变为33.33%。