Причина в том, что вы выполнили операции
f-1
f+1
f + randint(1,6)
, вместо этого вы должны были сделать
f= f-1
f= f+1
f= f + randint(1,6)
, поэтому функция должна быть
def roll():
f=0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb is 1 or 2:
f=f-1
elif numb is 3 or 4 or 5:
f=f+1
else:
f=f + randint(1,6)
count=count+1
arry.append(f)
return arry
Надеюсь, это поможет
SendARP P/Invoke идет как это:
[DllImport("iphlpapi.dll", ExactSpelling=true)]
public static extern int SendARP( int destIp, int srcIP, byte[] macAddr, ref uint physicalAddrLen );
PInvoke.NET имеет этот пример:
IPAddress dst = IPAddress.Parse("192.168.2.1"); // the destination IP address
byte[] macAddr = new byte[6];
uint macAddrLen = (uint)macAddr.Length;
if (SendARP(BitConverter.ToInt32(dst.GetAddressBytes(), 0), 0, macAddr, ref macAddrLen) != 0)
throw new InvalidOperationException("SendARP failed.");
string[] str = new string[(int)macAddrLen];
for (int i=0; i<macAddrLen; i++)
str[i] = macAddr[i].ToString("x2");
Console.WriteLine(string.Join(":", str));
Найти Ваше собственное:
Добавьте ссылку на Систему. Управление
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection mcCol = mc.GetInstances();
foreach (ManagementObject mcObj in mcCol)
{
Console.WriteLine(mcObj["Caption"].ToString());
Console.WriteLine(mcObj["MacAddress"].ToString());
}
Не уверенный в нахождении того из другого устройства.
Рычаг в подсистему WMI. Некоторый код VBScript для начинаний в правильном направлении здесь