quize app을하고 있습니다. 이 애플 리케이션 질문에 중복이 생성되지 않을 수 있습니다. 그래서 int value = random.nextInt (10-1) + 1.When과 같은 코드를 사용하고 있습니다. 응답 난수를 새로 생성 할 것이므로 duplicates.How를 생성 할 때마다 이전의 무작위 값을 매번 새로운 무작위 값과 비교할 수 있습니까?복제하지 않고 단일 무작위 값을 생성하는 방법?
답변
값을 해시 맵에 저장 한 다음 값이 이미 있는지 확인하십시오. 거기에 다시 올리면.
HashMap에 저장하고 검사하는 것이 현명한 방법입니다. 그러나 이것은 실패 할 때마다 HashMap에 복제물을 추가하려고 할 때마다 새로운 충돌을 다시 생성해야하기 때문에 더 많은 충돌을 야기 할 수 있습니다. 그러나 한꺼번에 모든 것을 생성하고 뒤죽박죽이되어서는 안됩니다. 그러나 입력 집합이 작기 때문에이 충돌은 너무 많이 발생하지 않을 수 있습니다 (임의성에 따라 또는 너무 많이 발생하는 경우 ??) 및 비교를 위해지도 요소에 대한 O (1) 액세스가 도움이됩니다. – Slartibartfast
Shuffle은 아마도 가장 좋은 방법 일 것입니다. 저는 문제를 해결할 수있는 빠른 방법을 생각했습니다. – Warpzit
- 는
보관할 목록에서 제거 생성 된 번호 목록을 임의 재생 목록
- 1에서 10을 저장소에 생성
List<Integer> list = new LinkedList<Integer>();
for (int i = 1; i <= 10; i++) { list.add(i) } Collections.shuffle(list); int value= list.remove(0); ....... value= list.remove(0);
및 그래서 ...
다음을 확인하십시오 : Java - generate Random range of specific numbers without duplication of those numbers - how to?
또한 HashMap에 저장하고 검사하는 것이 다른 답변과 똑같은 방법입니다. 그러나 이것은 실패 할 때마다 HashMap에 복제물을 추가하려고 할 때마다 새로운 충돌을 다시 생성해야하기 때문에 더 많은 충돌을 야기 할 수 있습니다. 그러나 한꺼번에 모든 것을 생성하고 뒤죽박죽이되어서는 안됩니다. 그러나 입력 집합이 작기 때문에 (10)이 충돌은 너무 많이 발생하지 않을 수 있습니다 (임의성에 따라 또는 너무 많이 발생하는 경우)? 비교를 위해지도 요소에 대한 O (1) 액세스가 도움이됩니다.
충돌 값을 재생성하는 것이 유효한 포인트입니다. 매우 큰 목록의 경우 불필요한 이동을 피하기 위해 첫 번째 요소 대신 마지막 요소를 검색 할 수 있습니다 (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/List.html#remove % 28int % 29). 또한 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Stack.html과 같은 LIFO 스택을 사용하면이 작업에 도움이 될 수 있습니다.그러나 10 개의 무작위 수 목록을 보면 그다지 큰 차이는 없습니다. 여기에 –
때마다 10 임의의 숫자가 time.bt에서 생성하고 있습니다 나는 새로운 임의의 nubers와 이전 임의의 숫자를 비교해야합니다. 어떻게해야합니까? –
왜 비교해야합니까? 제거 할 때마다 생성 된 10 개의 숫자 목록에서 새로운 고유 난수를 얻습니다. 예를 들어, 셔플 된 숫자의 한 세트는 9,8,6,1,3,2,4,5,10,7 일 수 있습니다. 따라서이 목록에서 고유 번호를 가져올 때마다 – Slartibartfast
이 클래스의 주요 속성에서 'HashSet'클래스를 사용하면 값이 다르기 때문에 값이 반복되지 않음을 의미합니다 ...... 그래서 무작위로 생성 할 수 있습니다. 와 .... nextInt 매개 변수의 최대 없음을주고있다 그것을이
Random r = new Random();
int i = r.nextInt(100);
HashSet<int> s = new HashSet<int>();
s.add(i);
generat라는 임의의 숫자와 같은 세트에 추가하고 그것을 INTI HashSet에 추가하고 사용합니다. 범위는 ...
예제 코드는 다음과 같이
여기Random r = new Random();
//declare a hash set
HashSet set = new HashSet();
for(int i=0;i<50;i++)
{
set.add(r.nextInt(100));
}
// create an iterator
Iterator iterator = set.iterator();
// check values
while (iterator.hasNext()){
System.out.println("Value: "+iterator.next() + " ");
}
이 코드를 사용하지만 중복을 생성합니다. 제발 도와주세요 –
u는 잘못된 방식으로이 코드를 사용하고 있습니다 ..... 나는 완전한 코드 복사본을 붙여 넣기하고 실행하고 아니오를 보게 할 것입니다. 세트에서 다시 반복됩니다. – Rahul
것은 내가 내 프로젝트에 사용 된 코드입니다. 전체 소스 코드 here
package com.banglardin.test_code;
import android.app.*;
import android.content.*;
import android.content.res.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import com.banglardin.test_code.*;
import java.util.*;
public class MainActivity extends Activity {
protected SharedPreferences preference;
protected Questions questionObject;
protected TextView textView;
protected Button buttonView, cleanButton;
protected ArrayList<String> ques_array;
protected final String KEY="Key124";
protected int i=0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
//intilized Question and preference
questionObject = new Questions();
preference = getSharedPreferences(KEY,Context.MODE_WORLD_WRITEABLE);
// get array from question object
try{
ques_array= questionObject.getQestions(getApplicationContext());
}catch(Exception e){
e.printStackTrace();
}
// intilized views
textView = (TextView)findViewById (R.id.question);
buttonView = (Button) findViewById (R.id.button);
cleanButton = (Button) findViewById (R.id.button_clean);
textView.setTextSize(18.33f);
buttonView.setTextSize(18.00f);
cleanButton.setTextSize(18.00f);
// set onclickListener on button view
buttonView.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
int set = 0;
if(i < 6){
while(set == 0){
String history = getString(KEY); // <0>
Random r = new Random();
int id = r.nextInt(ques_array.size());
String s_id= "<"+ String.valueOf(id) + ">"; // ex : <0>
if(!history.contains(s_id)){
textView.setText(ques_array.get(id));
setString(KEY, (history + s_id)); // ex : <0> + <3> = <0><3>;
set = 67;
i++;
}
}
}
else if(i>=6){
textView.setText(getResources().getString(R.string.e2));
Toast.makeText(MainActivity.this,"Questions are not available any more",2).show();
}
}
}
);
// set onclickListener on button view
cleanButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
setString(KEY, "<-0>");
}
}
);
}
@Override
public void onBackPressed(){
if(preference != null){
setString(KEY, ("<-0>"));
finish();
}
super.onBackPressed();
}
/** Get String value from preference */
private String getString(String KEY){
if(preference != null){
return preference.getString(KEY,"<-33>");
}
else{
return null;
}
}
/** Put String value to preference */
private void setString(String KEY, String value){
if(preference != null){
SharedPreferences.Editor edit = preference.edit();
edit.putString(KEY, value);
edit.commit();
}
}
/** Class that gives us all questions */
class Questions{
protected ArrayList<String> data;
public ArrayList<String> getQestions(Context c) throws Exception{
data = new ArrayList<String>();
Resources res= c.getResources();
String qes[] ={
res.getString(R.string.q1) , //0
res.getString(R.string.q2) , //1
res.getString(R.string.q3) , //2
res.getString(R.string.q4) , //3
res.getString(R.string.q5) , //4
res.getString(R.string.q6) , //5
res.getString(R.string.q7) , //6
};
// add all the strings one by one
for(String i : qes){
data.add(i);
}
return data;
}
}
}
- 1. 위치를 복제하지 않고 배열에서 무작위 요소를 검색
- 2. 여러 번 복제하지 않고 무작위 화하기
- 3. "최고의"무작위 수레를 생성하는 방법?
- 4. 복제하지 않고 Jquery 슬라이더
- 5. LogicalTypes의 무작위 값을 얻는 방법
- 6. 매초마다 무작위 값을 생성하는 Android 텍스트 위젯
- 7. Laravel, 데이터를 복제하지 않고 ajax를 사용하는 방법
- 8. 래퍼를 복제하지 않고 div를 복제하는 방법
- 9. 복제하지 않고 문자열에서 단일 후행 줄 바꿈을 제거하십시오.
- 10. 반복하지 않고 무작위 배열
- 11. 복제하지 않고 저장소에 분기 만들기
- 12. heroku는 복제하지 않고 공동 작업합니다
- 13. 텍스트를 복제하지 않고 필드 복제하기
- 14. 복제하지 않고 jQuery 캐 러셀
- 15. 확인란을 복제하지 않고 checkbox.name을 체크하여 확인란을 복제하지 마십시오.
- 16. PHP에서 무작위 문자 및 숫자를 생성하는 방법
- 17. 가변 길이를 갖는 무작위 문자열을 생성하는 방법
- 18. iPhone : 대문자 C에서 무작위 대문자를 생성하는 방법
- 19. 반복하지 않는 무작위 레이아웃을 생성하는 방법
- 20. 지속적으로 생성자 값을 복제하지 않고 확장 스칼라 케이스 클래스?
- 21. 몽구스 - 복제하지 않고 서로 오브젝트를 연결합니다.
- 22. PostgreSQL, 일대 다 쿼리, 복제하지 않고?
- 23. 인스턴스를 복제하지 않고 여러 번 프로그램 실행
- 24. 빈 요소를 복제하지 않고 추가 및 업데이트 -
- 25. 복제하지 않고 크기를 조정할 때 요소를 추가/제거하는 방법
- 26. 값을 단일 변수에 저장하는 방법
- 27. SAS에서 무작위 데이터 누락을 생성하는 방법은 무엇입니까?
- 28. 다른 서버에 mysirty 테이블을 복제하지 않고 복제
- 29. Gulp : 복제하지 않고 모든 종속성을 실행하고 있습니까?
- 30. 출력 파일을 복제하지 않고 AJAX 사용
http://stackoverflow.com/questions/5224877/java-generate-random-range-of-specific-numbers-without-duplication-of-those-nu I입니다 이 링크가 도움이 될 것이라고 생각하십시오 – Ramz