如何使用Random使Java中生成的数字完全不同?

问题描述 投票:0回答:1

[基本上,我需要生成5个随机数,每次生成它们时都是唯一的(因此它们不会重复),然后将它们输出到TextView。

我设法生成了5个数字,但是,它们并非一直都是唯一的,这意味着有时在按下按钮生成这些数字时,相同的数字会出现两次或多次。

这是到目前为止我得到的:

import androidx.annotation.IntegerRes;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

    private TextView numbersGenerated;
    private Button btnGenerate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        numbersGenerated = findViewById(R.id.numbers);
        btnGenerate = findViewById(R.id.btnGenerate);

        btnGenerate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ArrayList<Integer> arrayRandom = new ArrayList<>();

                Random rand = new Random();
                for (int i = 0; i < 5; i++)
                {
                    Integer r = rand.nextInt(50) + 1;
                    arrayRandom.add(r);
                }
                numbersGenerated.setText(arrayRandom.toString());
            }
        });
    }
}

我不确定我可以进行哪种类型的验证,因为这是我第一次接触Java,因此可以提供任何帮助。

java android random
1个回答
2
投票

而不是

ArrayList<Integer> arrayRandom = new ArrayList<>();

使用一组

Set<Integer> set = new HashSet<>();

然后做一个

while (set.size() < 5) {
    set.add(rand.nextInt(50) + 1);
}
© www.soinside.com 2019 - 2024. All rights reserved.