1
무작위로 n을 생성하려면 그 합이 m이어야하며이 x는 x와 y 사이에 있어야합니다.x와 y 사이의 합계가 m 인 무작위 번호를 생성
예를 들어: - 나는 20 아니, 3 사이에 9 필요하다고하면 그 합을 포함 내가 제한뿐만 아니라 더의 합과 필요한 양을 지정하려면 (100)
해야하는 사이 무작위 번호가 생성되어야하며 그것은 지정된 금액의 무작위 번호를 제공해야합니다. 아래는 2보다 큰 no를 생성하는 코드이지만 최대 제한을 넣을 수는 없습니다. 또한, 나오는 합계와 아니오의 합계. 그것이 생성하는 것은 지정된 합계와 같지 않습니다. 나는 완전히 혼란스러워 나를 도와주세요.
TextView textView,randomTotaltxt;
int count0 = 0;
int count1 = 0;
int targetSum = 100;
int numberofDraws = 20;
textView = (TextView) findViewById(R.id.textview);
randomTotaltxt = (TextView) findViewById(R.id.randomTptalText);
Random r = new Random();
ArrayList<Integer> load = new ArrayList<>();
//random no
int sum = 0;
for (int i=0; i<numberofDraws;i++){
int next = r.nextInt(targetSum)+1;
Log.d("No",""+next);
load.add(next);
sum += next;
}
//scale it
double scale = 1d*targetSum/sum;
sum=0;
for (int i=0; i<numberofDraws;i++){
load.set(i, (int)(load.get(i)*scale));
sum += load.get(i);
}
while (load.contains(0)|| load.contains(1)){
for (int i=0; i<load.size();i++) {
if (load.get(i).equals(0)) {
load.set(i, load.get(i) + 2);
count0++;
sum = sum+1;
}
if (load.get(i).equals(1)) {
load.set(i, load.get(i) + 2);
sum += load.get(i);
count1++;
sum = sum+1;
}
}
}
// take rounding
while (sum++ <targetSum){
int i = r.nextInt(numberofDraws);
load.set(i, load.get(i) + 1);
}
textView.setText(""+load);
randomTotaltxt.setText(""+(sum-1));