ورود

View Full Version : Random تکراری



pouya1999best@g
شنبه 08 شهریور 1393, 12:16 عصر
سلام؛
من میخوام وقتی وارد برنامه میشم یک Toast حاوی یکی از اعداد 1تا 4 بصورت تصادفی نشان داده بشه و برای اینکار از Random استفاده میکنم.
اما توی خیلی از موارد اعداد تکراری نشان داده میشن.یعنی مثلا چهار بار بطور پشت سر هم عدد 3 نشون داده میشه؛میخوام وقتی یک عدد تصادفی نشان داده شد دیگه نمایش داده نشه تا اعداد دیگر هم نمایش داده بشن و بعد از اینکه همه نمایش داده شدن،دوباره مجاز به نمایش بشه؛این اتفاق روی همه این اعداد بیفته(1،2،3،4)
اگه میشه کمکم کنید.

ho3ein.3ven
شنبه 08 شهریور 1393, 13:22 عصر
سلام .

از shared preferences استفاده کنید .
در هر بار ورود اعداد انتخاب شده قبلی موجود در shared preferences را بررسی کنید .

pouya1999best@g
شنبه 08 شهریور 1393, 13:32 عصر
چجوری؛نمونه کد دارید؟؟؟

NeoFighT
شنبه 08 شهریور 1393, 15:36 عصر
بفرما از این استفاده کن
ولی فکر کنم ساده تر و استاندارد تر از این هم میشه نوشت ولی این هم جواب میده.:متفکر:


import java.util.ArrayList;
import java.util.Random;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends Activity {
final int NUMS = 4;
SharedPreferences sp;
SharedPreferences.Editor edit;
ArrayList<Integer> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

sp = getSharedPreferences("mySp",MODE_PRIVATE);
edit = sp.edit();
list = new ArrayList<>();

if(sp.getBoolean("isFirst",true)){
Toast.makeText(getBaseContext(),"Repeat...",Toast.LENGTH_SHORT).show();
for(int i=1;i<=NUMS;i++){
edit.putBoolean("int_" + i,false);
}
edit.putBoolean("isFirst", false);
edit.commit();
}

for(int i=1;i<=NUMS;i++){
if(!sp.getBoolean("int_"+i,false))
list.add(i);
}

if(list.size()==0){
edit.putBoolean("isFirst",true);
edit.commit();
return;
}else{
Random r = new Random();
int i = r.nextInt(list.size());
int n = list.get(i);

edit.putBoolean("int_"+n,true);
edit.commit();
Toast.makeText(getBaseContext(),"--" + n + "--",Toast.LENGTH_SHORT).show();
if(list.size()==1){
edit.putBoolean("isFirst",true);
edit.commit();
return;
}
}
}
}

pouya1999best@g
شنبه 08 شهریور 1393, 17:56 عصر
کارت عالیه پسر؛
حیف که فقط با دکمه تشکر میتونم ازت تشکر کنم:قلب: