It also assumes that your project isn't close enough to some existing one that you really need to define a completely new interface instead of just using or extending that of an existing device.
It also assumes that your project isn't close enough to some existing one that you really need to define a completely new interface instead of just using or extending that of an existing device.
If you do out the math it turns out there's a 50% chance of collision after only 77,163 hashes.
[1] https://en.wikipedia.org/wiki/Birthday_problem
[2] 256 days=2^8, 16=2^4
[3] 365 days=2^8.51, 19=2^4.255
Deleted comment
No, but there are thousands of preset IDs in the hundreds of drivers already present on the computer.
For this reason, isn't it safe to pick a random 32-bit identifier?
Devices don't just collide with others on the same computer, but with other drivers on the same computer.
Edit: Unfortunately sillysaurus3 deleted the parent comment. It had an interesting summary of a simulation of the collision problem.
But randomly selecting an id doesn't make much sense. For example here are all the ids Linux knows about: http://www.linux-usb.org/usb.ids. Obviously don't select Logitech, Microsoft, Canon, Samsung, etc. manufacture id. Either select an unused manufacture and then randomly select the device id. Or select a manufacturer id that is no longer used like US Robotics (I doubt they are making any new modems) and then randomly select a device id.
As soon as make your device, connect it to a Windows machine which will try and find a driver -- if it doesn't, probably no conflict. If there is a conflict, it's with a product that distributes it's driver manually - so you don't have to worry. Or a product that doesn't exist yet, which could be an issue.