Действительно ли это - хороший способ генерировать строку случайных символов? [закрытый]

При запуске действия, т. Е. На onCreate, добавьте следующий код.

  public void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);         
        setContentView(R.layout.main);

        MediaPlayer mPlayer = MediaPlayer.create(FakeCallScreen.this, R.raw.mysoundfile);
        mPlayer.start();

    }

При остановке действия, т. Е. На onDestroy, добавьте следующий код.

   public void onDestroy() {

    mPlayer.stop();
    super.onDestroy();

}

Надеюсь, это поможет:)

6
задан Stacked 15 September 2016 в 19:51
поделиться

2 ответа

Я бы предпочел передать экземпляр Random в метод - тогда вы можете повторно использовать один и тот же экземпляр несколько раз, что важно, если вам нужно сгенерировать много случайных строки в быстрой последовательности. Тем не менее, я бы все равно несколько изменил его:

public const string LowerCaseAlphabet = "abcdefghijklmnopqrstuvwyxz";
public const string UpperCaseAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

public static string GenerateUpperCaseString(int size, Random rng)
{
    return GenerateString(size, rng, UpperCaseAlphabet);
}

public static string GenerateLowerCaseString(int size, Random rng)
{
    return GenerateString(size, rng, LowerCaseAlphabet);
}

public static string GenerateString(int size, Random rng, string alphabet)
{
    char[] chars = new char[size];
    for (int i=0; i < size; i++)
    {
        chars[i] = alphabet[rng.Next(alphabet.Length)];
    }
    return new string(chars);
}
  • Нет необходимости использовать StringBuilder, если вы знаете окончательную длину
  • Использование Random.NextDouble () указывает на отсутствие знаний о Random класс. (В частности, Random.Next (int, int)
  • Создание нового объекта Random при каждом вызове может привести к дублированию строк
  • Вызов Convert.ToInt32 и Convert. ToChar кажется уродливым по сравнению с простым преобразованием
  • нижнего регистра впоследствии кажется бессмысленным по сравнению с выбором строчных букв для начала с
  • . Предоставление алфавита для выбора намного более гибкое (с помощью вспомогательных методов для общие случаи)
24
ответ дан 8 December 2019 в 04:09
поделиться

Если бы я сделал это (а я сделал это, но где-то в Java, я бы предоставил массив допустимых символов и использовал бы ГСЧ просто для выбора индекса символа. Это также позволит вам запретить символы, которые вы не хотите создавать (если вы создаете вводимый человеком лицензионный ключ, вы не хотите создавать символы, которые можно спутать друг с другом; например, 0 и O, или 1 и 1).

РЕДАКТИРОВАТЬ : да, как то, что сделал Джон ...

1
ответ дан 8 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: