Losowanie z prawdopodobieństwem

Losowanie z prawdopodobieństwem
ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Witam
Poszukuje skryptu w C# , który losuje liczby z prawdopodobieństwem.
Widział ktoś może coś takiego gotowego gdzieś lub napisałby za małą opłatą.
Chodzi mi o to , że mam F3/F4/F5 i F5 ma losowac w 70% , F3 20% i F4 10%.

Najlepiej jakby do tego skrypt nacisnął po zrobieniu losowania wynik czyli np. F3 na klawiaturze.

edytowany 1x, ostatnio: Stranek
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Losowanie z prawdopodobieństwem to w istocie:

Kopiuj
n = (pseudo)losowa liczba od 1 do 10, przy rozkładzie jednostajnym

jeśli n >= 1 oraz n <= 7
  wylosowano F5

jeśli n >= 8 oraz n <= 9
  wylosowano F3

w przeciwym razie
  wylosowano F4

Z czym konkretnie masz problem:?

Bo Widział ktoś może coś takiego gotowego gdzieś lub napisałby za małą opłatą. brzmi jak prośba o gotowca, a one przynależą do działu Ogłoszenia drobne.


edytowany 3x, ostatnio: Patryk27
ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

A da rade dodac , zeby skrypt jeszcze nacisnal z klawiatury wylosowana liczba w tym przypadku f4 czy tam f5? W c#

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około godziny
  • Postów:6666
0

Wylosuj sobie liczbę modułem Random z zakresu od 0 do 100.

Na tej podstawie kilkoma ifami określisz, który F ma być wciśnięty. Jeśli losowa liczba <= 70 to F5, else if <= 90 to F3, else F4.


🕹️⌨️🖥️🖱️🎮
ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Dałem ogłoszonko :

https://4programmers.net/Forum/Og%C5%82oszenia_drobne/311708-zlece_skrypt_losujacy_liczby?p=1495711#id1495711

Jak dla Panów to taka banalna sprawa to może ktoś za niewielką opłatą by się podjął prostego skryptu :)?

Samemu niestety jestem zielony znam podstawy HTML CSS PHP , ale tutaj raczej sobie nie poradze chyba , że ktoś posiada gotowy taki skrypt.

edytowany 2x, ostatnio: Stranek
Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około godziny
  • Postów:6666
0

To chyba służy do symulowania naciśnięć klawiszy:

https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send.aspx


🕹️⌨️🖥️🖱️🎮
ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

public class Program
{
public static void Main()
{
System.Windows.Forms.MessageBox.Show("test");
}
}

Skrypt koniecznie musze osadzic w czyms takim
To ma byc dodatek do macro , ktore udostepnia wstawienie kawalka kodu w C#.
Inaczej nie jestem w stanie tego zrobic niz programowo czyli wyszukac F3 lub F4 i potem to nacisnac.

edytowany 1x, ostatnio: Stranek
Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około godziny
  • Postów:6666
0

A w jakich sytuacjach ma następować losowanie i wciskanie klawisza? Co jakiś odstęp czasu, czy skrócie klawiszowym? Ten F będzie wciskany dla innej aplikacji?


🕹️⌨️🖥️🖱️🎮
edytowany 2x, ostatnio: Spine
ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Leci sobie macro.

Macro odpala skrypt c#(bo jest taka opcja)
Skrypt losuje powiedzmy F3 pobiera te F3 i klika je na klawiaturze.
Jak ustawie na sztywno w macro f3 czy f5 to zmienia rozdzielczosc.
Zewnętrzny program odpalony w tle dostaje F3(zmienia rozdzielczośc bo tak ustawiłem hotkey na F3 czy F4) i to tyle.

Chodzi o wylosowanie z prawdopodobieństwem własnie F3 czy F4 i naciśniecie nic wiecej.

edytowany 4x, ostatnio: Stranek
Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około godziny
  • Postów:6666
0

Ok, postaram się coś później zrobić.


🕹️⌨️🖥️🖱️🎮
0
Kopiuj
static void Perform()
{
    var keyManager = new Dictionary<string, Propability>();
    keyManager.Add("F3", new Propability(0.7));
    keyManager.Add("F4", new Propability(0.2));
    keyManager.Add("F5", new Propability(0.1));

    var rnd = new Random();

    var rndValue = rnd.NextDouble();
    foreach (var key in keyManager.Keys)
    {
        var value = keyManager[key];
        if (value.Ratio > rndValue)
        {
            // wcisnij przycisk
            break;
        }
    }
}
ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Panie Pomidor bardzo dziękuje za odpowiedź i mam pytanie.
On tez klika ?

I pytanko jak to osadzić w takim czymś ?
Jest Pan w stanie pomóc ?

Kopiuj
public class Program
{
	public static void Main()
	{
		System.Windows.Forms.MessageBox.Show("test");
	}
}

Macro wymaga takiego formatu zapytania.
Da radę tutaj podstawić ten kod czy to trochę inna bajka?

edytowany 1x, ostatnio: Stranek
0
Stranek napisał(a):

Panie Pomidor bardzo dziękuje za odpowiedź i mam pytanie.
On tez klika ?

Nie wiem, sprawdz:

Kopiuj
static void Perform()
{
    var keyManager = new Dictionary<string, double>();
    keyManager.Add("F3", 0.7);
    keyManager.Add("F4", 0.2);
    keyManager.Add("F5", 0.1);

    var rnd = new Random();

    var rndValue = rnd.NextDouble();
    foreach (var key in keyManager.Keys)
    {
        var value = keyManager[key];
        if (value > rndValue)
        {
            SendKeys.Send(key);
            break;
        }
    }
}
0
Stranek napisał(a):

Panie Pomidor bardzo dziękuje za odpowiedź i mam pytanie.
On tez klika ?

I pytanko jak to osadzić w takim czymś ?
Jest Pan w stanie pomóc ?

Kopiuj
public class Program
{
	public static void Main()
	{
		System.Windows.Forms.MessageBox.Show("test");
	}
}

Macro wymaga takiego formatu zapytania.
Da radę tutaj podstawić ten kod czy to trochę inna bajka?

No to zawartosc metody Perform() wrzuc do metody main

ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Chciałbym powiedzieć , że nie jestem programistą ani na takiego nie aspiruje.
Zrobiłem proste macro , do którego działania potrzebuje właśnie tego kodu , który Pan wysłał za co jeszcze raz dziękuje bo nie spodziewałem się , że ktoś mi go udostępni za darmo na forum.
Staram się pozmieniać jakoś po swojemu , ale mam to co na screenie.

  • ss.png (13 KB) - ściągnięć: 121
0
Stranek napisał(a):

Chciałbym powiedzieć , że nie jestem programistą ani na takiego nie aspiruje.
Zrobiłem proste macro , do którego działania potrzebuje właśnie tego kodu , który Pan wysłał za co jeszcze raz dziękuje bo nie spodziewałem się , że ktoś mi go udostępni za darmo na forum.
Staram się pozmieniać jakoś po swojemu , ale mam to co na screenie.

Ten blad sugeruje, ze w 22 linijce brakuje znaku }

ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0
Kopiuj
public class Program
{
	public static void Main()
	
		{
    var keyManager = new Dictionary<string, double>();
    keyManager.Add("F3", 0.7);
    keyManager.Add("F4", 0.2);
    keyManager.Add("F5", 0.1);
 
    var rnd = new Random();
 
    var rndValue = rnd.NextDouble();
    foreach (var key in keyManager.Keys)
    {
        var value = keyManager[key];
        if (value > rndValue)
        {
            SendKeys.Send(key);
            break;
        }
    }
}
	}
}

Mam takie coś i teraz to co na screenie nowym na dole.

  • ss2.png (15 KB) - ściągnięć: 73
0
Stranek napisał(a):
Kopiuj
public class Program
{
	public static void Main()
	
		{
    var keyManager = new Dictionary<string, double>();
    keyManager.Add("F3", 0.7);
    keyManager.Add("F4", 0.2);
    keyManager.Add("F5", 0.1);
 
    var rnd = new Random();
 
    var rndValue = rnd.NextDouble();
    foreach (var key in keyManager.Keys)
    {
        var value = keyManager[key];
        if (value > rndValue)
        {
            SendKeys.Send(key);
            break;
        }
    }
}
	}
}

Mam takie coś i teraz to co na screenie nowym na dole.

Usun ostatni }

ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0
Kopiuj
public class Program
{
	public static void Main()
	
		{
    var keyManager = new Dictionary<string, double>();
    keyManager.Add("F3", 0.7);
    keyManager.Add("F4", 0.2);
    keyManager.Add("F5", 0.1);
 
    var rnd = new Random();
 
    var rndValue = rnd.NextDouble();
    foreach (var key in keyManager.Keys)
    {
        var value = keyManager[key];
        if (value > rndValue)
        {
            SendKeys.Send(key);
            break;
        }
    }
}
	}

Usunąłem .
Kodzik wygląda następująco , ale dostaje takie coś.

  • ss3.png (22 KB) - ściągnięć: 147
  • ss3.png (22 KB) - ściągnięć: 70
edytowany 1x, ostatnio: Stranek
0

Zobacz tak:

Kopiuj
public class Program
{
    public static void Main()

    {
        var keyManager = new System.Collections.Generic.Dictionary<string, double>();
        keyManager.Add("F3", 0.7);
        keyManager.Add("F4", 0.2);
        keyManager.Add("F5", 0.1);

        var rnd = new System.Random();

        var rndValue = rnd.NextDouble();
        foreach (var key in keyManager.Keys)
        {
            var value = keyManager[key];
            if (value > rndValue)
            {
                System.Windows.Forms.SendKeys.Send(key);
                break;
            }
        }
    }
}
ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Juz teraz bez bledow.
Takie cos dostaje , ale nie klika cos

  • ss4.png (19 KB) - ściągnięć: 145
0

A wtedy dzialalo?

ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Nie klikało ani teraz ani wcześniej.
Teraz nie ma błędów jest to co wysłałem w ostatnim poście a okienko wygląda tak od macro jest Run CSHARP(Nie wiem to coś zmienia)

Dzięki za poświęcony czas na odpowiadanie mi :)

edytowany 1x, ostatnio: Stranek
0

usun linijke z System.Windows.Forms.SendKeys.Send(key); i zobacz, czy wtedy tez blad wyskakuje.

ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Nie wyskoczył bląd żaden , ale rozumiem , że ta linijka odpowiadała za naciśniecie przycisku ?
Jesli tak i nie da sie tego nacisnac z x powodu to moze da rade skopiowac ctrl+c wynik czyli np. f3 ?

edytowany 1x, ostatnio: Stranek
0

Tak, zastap wiec ta linijke tym: System.Windows.Forms.Clipboard.SetText(key);

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około godziny
  • Postów:6666
0

Przecież na stronie dokumentacji, którą podałem są kody dla F'ów....
{F1} {F2} itd. https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send.aspx
A Wy ciągle macie wpisane bez klamerek.


🕹️⌨️🖥️🖱️🎮
ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Kod od Pomidora zadziałał !

Bardzo dziękuje za pomoc.

A co do kliknięcia może ktoś ma jakiś pomysł czemu może nie działać :)?

0

Sprobuj z: System.Windows.Forms.SendKeys.Send("{" + key + "}");

ST
  • Rejestracja:prawie 7 lat
  • Ostatnio:7 miesięcy
  • Postów:57
0

Przechodzi , ale nie klika.
Co do tekstu to kopiuje pieknie rozne wyniki :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.